From 107f803ec758427839c674be2af13742f0e2404f Mon Sep 17 00:00:00 2001
From: Neil Kindlon <nek3d@d-128-109-67.bootp.Virginia.EDU>
Date: Thu, 4 Jun 2015 16:53:35 -0400
Subject: [PATCH] Added -mean to coverage w/ unit test
---
src/coverageFile/coverageFile.cpp | 19 +-
src/coverageFile/coverageFile.h | 1 +
src/coverageFile/coverageHelp.cpp | 2 +
src/utils/Contexts/ContextCoverage.cpp | 21 +-
src/utils/Contexts/ContextCoverage.h | 6 +-
test/coverage/test-coverage.sh | 587 ++++++++++++++++++---------------
6 files changed, 358 insertions(+), 278 deletions(-)
diff --git a/src/coverageFile/coverageFile.cpp b/src/coverageFile/coverageFile.cpp
index 57a6a24..859cfdc 100644
--- a/src/coverageFile/coverageFile.cpp
+++ b/src/coverageFile/coverageFile.cpp
@@ -47,6 +47,10 @@ void CoverageFile::processHits(RecordOutputMgr *outputMgr, RecordKeyVector &hits
doPerBase(outputMgr, hits);
break;
+ case ContextCoverage::MEAN:
+ doMean(outputMgr, hits);
+ break;
+
case ContextCoverage::HIST:
doHist(outputMgr, hits);
break;
@@ -55,6 +59,7 @@ void CoverageFile::processHits(RecordOutputMgr *outputMgr, RecordKeyVector &hits
default:
doDefault(outputMgr, hits);
break;
+
}
}
@@ -139,7 +144,7 @@ void CoverageFile::doCounts(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
void CoverageFile::doPerBase(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
{
- //loop through all bases in query, printing full record and metrcis for each
+ //loop through all bases in query, printing full record and metrics for each
const Record * queryRec = hits.getKey();
for (size_t i= 0; i < _queryLen; i++) {
_finalOutput = i +1;
@@ -150,6 +155,17 @@ void CoverageFile::doPerBase(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
}
}
+void CoverageFile::doMean(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
+{
+ size_t sum =0;
+ for (size_t i= 0; i < _queryLen; i++) {
+ sum += _depthArray[i];
+ }
+ format((float)sum / (float)_queryLen);
+ outputMgr->printRecord(hits.getKey(), _finalOutput);
+}
+
+
void CoverageFile::doHist(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
{
//make a map of depths to num bases with that depth
@@ -200,4 +216,3 @@ void CoverageFile::format(float val)
sprintf(_floatValBuf, "%0.7f", val);
_finalOutput.append(_floatValBuf);
}
-
diff --git a/src/coverageFile/coverageFile.h b/src/coverageFile/coverageFile.h
index 414f636..e5b3ce9 100644
--- a/src/coverageFile/coverageFile.h
+++ b/src/coverageFile/coverageFile.h
@@ -43,6 +43,7 @@ class CoverageFile : public IntersectFile {
void doCounts(RecordOutputMgr *outputMgr, RecordKeyVector &hits);
void doPerBase(RecordOutputMgr *outputMgr, RecordKeyVector &hits);
+ void doMean(RecordOutputMgr *outputMgr, RecordKeyVector &hits);
void doHist(RecordOutputMgr *outputMgr, RecordKeyVector &hits);
void doDefault(RecordOutputMgr *outputMgr, RecordKeyVector &hits);
diff --git a/src/coverageFile/coverageHelp.cpp b/src/coverageFile/coverageHelp.cpp
index b7686e9..8425f0d 100644
--- a/src/coverageFile/coverageHelp.cpp
+++ b/src/coverageFile/coverageHelp.cpp
@@ -34,6 +34,8 @@ void coverage_help(void) {
cerr << "\t-counts\t" << "Only report the count of overlaps, don't compute fraction, etc." << endl << endl;
+ cerr << "\t-mean\t" << "Report the mean depth of all positions in each A feature." << endl << endl;
+
IntersectCommonHelp();
sortedHelp();
diff --git a/src/utils/Contexts/ContextCoverage.cpp b/src/utils/Contexts/ContextCoverage.cpp
index b2b2b60..1dce8f2 100644
--- a/src/utils/Contexts/ContextCoverage.cpp
+++ b/src/utils/Contexts/ContextCoverage.cpp
@@ -11,9 +11,12 @@ ContextCoverage::ContextCoverage()
: _count(false),
_perBase(false),
_showHist(false),
- _coverageType(DEFAULT)
+ _coverageType(DEFAULT),
+ _usingColOps(false)
{
setExplicitBedOutput(true); //do not allow BAM output
+ setColumnOpsMethods(true);
+
}
@@ -36,6 +39,10 @@ bool ContextCoverage::parseCmdArgs(int argc, char **argv, int skipFirstArgs) {
if (strcmp(_argv[_i], "-hist") == 0) {
if (!handle_hist()) return false;
}
+ if (strcmp(_argv[_i], "-mean") == 0) {
+ if (!handle_mean()) return false;
+ }
+
}
return ContextIntersect::parseCmdArgs(argc, argv, _skipFirstArgs);
}
@@ -46,8 +53,8 @@ bool ContextCoverage::isValidState()
return false;
}
//Can only use one output option. Were two or more set?
- if (((int)_count + (int)_perBase + (int)_showHist) > 1) {
- _errorMsg = "\n***** ERROR: -counts, -d, and -hist are mutually exclusive options. *****";
+ if (((int)_count + (int)_perBase + (int)_showHist) + (int)_mean > 1) {
+ _errorMsg = "\n***** ERROR: -counts, -d, -mean, and -hist are all mutually exclusive options. *****";
return false;
}
@@ -76,3 +83,11 @@ bool ContextCoverage::handle_hist()
markUsed(_i - _skipFirstArgs);
return true;
}
+
+bool ContextCoverage::handle_mean()
+{
+ _mean = true;
+ _coverageType = MEAN;
+ markUsed(_i - _skipFirstArgs);
+ return true;
+}
diff --git a/src/utils/Contexts/ContextCoverage.h b/src/utils/Contexts/ContextCoverage.h
index 5a7b6b0..0c17beb 100644
--- a/src/utils/Contexts/ContextCoverage.h
+++ b/src/utils/Contexts/ContextCoverage.h
@@ -19,18 +19,22 @@ class ContextCoverage : public ContextIntersect {
virtual bool hasIntersectMethods() const { return true; }
virtual bool isValidState();
- typedef enum { DEFAULT, COUNT, PER_BASE, HIST } coverageType;
+ typedef enum { DEFAULT, COUNT, PER_BASE, HIST, MEAN } coverageType;
coverageType getCoverageType() const { return _coverageType; }
+ virtual bool usingColOps() const { return _usingColOps; }
private:
bool _count;
bool _perBase;
bool _showHist;
+ bool _mean;
coverageType _coverageType;
+ bool _usingColOps;
bool handle_c();
bool handle_d();
bool handle_hist();
+ bool handle_mean();
};
diff --git a/test/coverage/test-coverage.sh b/test/coverage/test-coverage.sh
index 8ea4f41..71a124d 100644
--- a/test/coverage/test-coverage.sh
+++ b/test/coverage/test-coverage.sh
@@ -41,12 +41,12 @@ rm *.bam
echo " coverage.t2...\c"
echo \
"chr1 20 70 6 25 + 2 50 50 1.0000000
-chr1 50 100 1 25 - 2 50 50 1.0000000
-chr1 200 250 3 25 + 1 50 50 1.0000000
-chr2 80 130 5 25 - 1 50 50 1.0000000
-chr2 150 200 4 25 + 2 50 50 1.0000000
-chr2 180 230 2 25 - 2 50 50 1.0000000" > exp
-$BT coverage -a a.bed -b a.bed > obs
+chr1 50 100 1 25 - 5 50 50 1.0000000
+chr1 200 250 3 25 + 4 38 50 0.7600000
+chr2 80 130 5 25 - 6 50 50 1.0000000
+chr2 150 200 4 25 + 7 50 50 1.0000000
+chr2 180 230 2 25 - 6 50 50 1.0000000" > exp
+$BT coverage -a a.bed -b b.bed > obs
check exp obs
rm exp obs
@@ -57,12 +57,12 @@ rm exp obs
echo " coverage.t3...\c"
echo \
"chr1 20 70 6 25 + 2
-chr1 50 100 1 25 - 2
-chr1 200 250 3 25 + 1
-chr2 80 130 5 25 - 1
-chr2 150 200 4 25 + 2
-chr2 180 230 2 25 - 2" > exp
-$BT coverage -a a.bed -b a.bed -counts > obs
+chr1 50 100 1 25 - 5
+chr1 200 250 3 25 + 4
+chr2 80 130 5 25 - 6
+chr2 150 200 4 25 + 7
+chr2 180 230 2 25 - 6" > exp
+$BT coverage -a a.bed -b b.bed -counts > obs
check exp obs
rm exp obs
@@ -73,19 +73,32 @@ rm exp obs
##################################################################
echo " coverage.t4...\c"
echo \
-"chr1 20 70 6 25 + 1 30 50 0.6000000
-chr1 20 70 6 25 + 2 20 50 0.4000000
-chr1 50 100 1 25 - 1 30 50 0.6000000
-chr1 50 100 1 25 - 2 20 50 0.4000000
-chr1 200 250 3 25 + 1 50 50 1.0000000
-chr2 80 130 5 25 - 1 50 50 1.0000000
-chr2 150 200 4 25 + 1 30 50 0.6000000
-chr2 150 200 4 25 + 2 20 50 0.4000000
-chr2 180 230 2 25 - 1 30 50 0.6000000
-chr2 180 230 2 25 - 2 20 50 0.4000000
-all 1 220 300 0.7333333
-all 2 80 300 0.2666667" > exp
-$BT coverage -a a.bed -b a.bed -hist > obs
+"chr1 20 70 6 25 + 2 50 50 1.0000000
+chr1 50 100 1 25 - 2 40 50 0.8000000
+chr1 50 100 1 25 - 3 10 50 0.2000000
+chr1 200 250 3 25 + 0 12 50 0.2400000
+chr1 200 250 3 25 + 1 20 50 0.4000000
+chr1 200 250 3 25 + 2 11 50 0.2200000
+chr1 200 250 3 25 + 3 4 50 0.0800000
+chr1 200 250 3 25 + 4 3 50 0.0600000
+chr2 80 130 5 25 - 3 46 50 0.9200000
+chr2 80 130 5 25 - 4 4 50 0.0800000
+chr2 150 200 4 25 + 5 22 50 0.4400000
+chr2 150 200 4 25 + 6 28 50 0.5600000
+chr2 180 230 2 25 - 1 16 50 0.3200000
+chr2 180 230 2 25 - 2 2 50 0.0400000
+chr2 180 230 2 25 - 3 6 50 0.1200000
+chr2 180 230 2 25 - 4 4 50 0.0800000
+chr2 180 230 2 25 - 5 13 50 0.2600000
+chr2 180 230 2 25 - 6 9 50 0.1800000
+all 0 12 300 0.0400000
+all 1 36 300 0.1200000
+all 2 103 300 0.3433333
+all 3 66 300 0.2200000
+all 4 11 300 0.0366667
+all 5 35 300 0.1166667
+all 6 37 300 0.1233333" > exp
+$BT coverage -a a.bed -b b.bed -hist > obs
check exp obs
rm exp obs
@@ -94,36 +107,36 @@ rm exp obs
##################################################################
echo " coverage.t5...\c"
echo \
-"chr1 20 70 6 25 + 1 1
-chr1 20 70 6 25 + 2 1
-chr1 20 70 6 25 + 3 1
-chr1 20 70 6 25 + 4 1
-chr1 20 70 6 25 + 5 1
-chr1 20 70 6 25 + 6 1
-chr1 20 70 6 25 + 7 1
-chr1 20 70 6 25 + 8 1
-chr1 20 70 6 25 + 9 1
-chr1 20 70 6 25 + 10 1
-chr1 20 70 6 25 + 11 1
-chr1 20 70 6 25 + 12 1
-chr1 20 70 6 25 + 13 1
-chr1 20 70 6 25 + 14 1
-chr1 20 70 6 25 + 15 1
-chr1 20 70 6 25 + 16 1
-chr1 20 70 6 25 + 17 1
-chr1 20 70 6 25 + 18 1
-chr1 20 70 6 25 + 19 1
-chr1 20 70 6 25 + 20 1
-chr1 20 70 6 25 + 21 1
-chr1 20 70 6 25 + 22 1
-chr1 20 70 6 25 + 23 1
-chr1 20 70 6 25 + 24 1
-chr1 20 70 6 25 + 25 1
-chr1 20 70 6 25 + 26 1
-chr1 20 70 6 25 + 27 1
-chr1 20 70 6 25 + 28 1
-chr1 20 70 6 25 + 29 1
-chr1 20 70 6 25 + 30 1
+"chr1 20 70 6 25 + 1 2
+chr1 20 70 6 25 + 2 2
+chr1 20 70 6 25 + 3 2
+chr1 20 70 6 25 + 4 2
+chr1 20 70 6 25 + 5 2
+chr1 20 70 6 25 + 6 2
+chr1 20 70 6 25 + 7 2
+chr1 20 70 6 25 + 8 2
+chr1 20 70 6 25 + 9 2
+chr1 20 70 6 25 + 10 2
+chr1 20 70 6 25 + 11 2
+chr1 20 70 6 25 + 12 2
+chr1 20 70 6 25 + 13 2
+chr1 20 70 6 25 + 14 2
+chr1 20 70 6 25 + 15 2
+chr1 20 70 6 25 + 16 2
+chr1 20 70 6 25 + 17 2
+chr1 20 70 6 25 + 18 2
+chr1 20 70 6 25 + 19 2
+chr1 20 70 6 25 + 20 2
+chr1 20 70 6 25 + 21 2
+chr1 20 70 6 25 + 22 2
+chr1 20 70 6 25 + 23 2
+chr1 20 70 6 25 + 24 2
+chr1 20 70 6 25 + 25 2
+chr1 20 70 6 25 + 26 2
+chr1 20 70 6 25 + 27 2
+chr1 20 70 6 25 + 28 2
+chr1 20 70 6 25 + 29 2
+chr1 20 70 6 25 + 30 2
chr1 20 70 6 25 + 31 2
chr1 20 70 6 25 + 32 2
chr1 20 70 6 25 + 33 2
@@ -164,54 +177,54 @@ chr1 50 100 1 25 - 17 2
chr1 50 100 1 25 - 18 2
chr1 50 100 1 25 - 19 2
chr1 50 100 1 25 - 20 2
-chr1 50 100 1 25 - 21 1
-chr1 50 100 1 25 - 22 1
-chr1 50 100 1 25 - 23 1
-chr1 50 100 1 25 - 24 1
-chr1 50 100 1 25 - 25 1
-chr1 50 100 1 25 - 26 1
-chr1 50 100 1 25 - 27 1
-chr1 50 100 1 25 - 28 1
-chr1 50 100 1 25 - 29 1
-chr1 50 100 1 25 - 30 1
-chr1 50 100 1 25 - 31 1
-chr1 50 100 1 25 - 32 1
-chr1 50 100 1 25 - 33 1
-chr1 50 100 1 25 - 34 1
-chr1 50 100 1 25 - 35 1
-chr1 50 100 1 25 - 36 1
-chr1 50 100 1 25 - 37 1
-chr1 50 100 1 25 - 38 1
-chr1 50 100 1 25 - 39 1
-chr1 50 100 1 25 - 40 1
-chr1 50 100 1 25 - 41 1
-chr1 50 100 1 25 - 42 1
-chr1 50 100 1 25 - 43 1
-chr1 50 100 1 25 - 44 1
-chr1 50 100 1 25 - 45 1
-chr1 50 100 1 25 - 46 1
-chr1 50 100 1 25 - 47 1
-chr1 50 100 1 25 - 48 1
-chr1 50 100 1 25 - 49 1
-chr1 50 100 1 25 - 50 1
-chr1 200 250 3 25 + 1 1
-chr1 200 250 3 25 + 2 1
-chr1 200 250 3 25 + 3 1
-chr1 200 250 3 25 + 4 1
-chr1 200 250 3 25 + 5 1
-chr1 200 250 3 25 + 6 1
-chr1 200 250 3 25 + 7 1
-chr1 200 250 3 25 + 8 1
-chr1 200 250 3 25 + 9 1
-chr1 200 250 3 25 + 10 1
-chr1 200 250 3 25 + 11 1
-chr1 200 250 3 25 + 12 1
-chr1 200 250 3 25 + 13 1
-chr1 200 250 3 25 + 14 1
-chr1 200 250 3 25 + 15 1
-chr1 200 250 3 25 + 16 1
-chr1 200 250 3 25 + 17 1
-chr1 200 250 3 25 + 18 1
+chr1 50 100 1 25 - 21 2
+chr1 50 100 1 25 - 22 2
+chr1 50 100 1 25 - 23 2
+chr1 50 100 1 25 - 24 2
+chr1 50 100 1 25 - 25 3
+chr1 50 100 1 25 - 26 2
+chr1 50 100 1 25 - 27 2
+chr1 50 100 1 25 - 28 3
+chr1 50 100 1 25 - 29 2
+chr1 50 100 1 25 - 30 2
+chr1 50 100 1 25 - 31 2
+chr1 50 100 1 25 - 32 2
+chr1 50 100 1 25 - 33 2
+chr1 50 100 1 25 - 34 2
+chr1 50 100 1 25 - 35 2
+chr1 50 100 1 25 - 36 2
+chr1 50 100 1 25 - 37 2
+chr1 50 100 1 25 - 38 2
+chr1 50 100 1 25 - 39 2
+chr1 50 100 1 25 - 40 2
+chr1 50 100 1 25 - 41 2
+chr1 50 100 1 25 - 42 2
+chr1 50 100 1 25 - 43 3
+chr1 50 100 1 25 - 44 3
+chr1 50 100 1 25 - 45 3
+chr1 50 100 1 25 - 46 3
+chr1 50 100 1 25 - 47 3
+chr1 50 100 1 25 - 48 3
+chr1 50 100 1 25 - 49 3
+chr1 50 100 1 25 - 50 3
+chr1 200 250 3 25 + 1 4
+chr1 200 250 3 25 + 2 4
+chr1 200 250 3 25 + 3 4
+chr1 200 250 3 25 + 4 3
+chr1 200 250 3 25 + 5 3
+chr1 200 250 3 25 + 6 3
+chr1 200 250 3 25 + 7 3
+chr1 200 250 3 25 + 8 2
+chr1 200 250 3 25 + 9 2
+chr1 200 250 3 25 + 10 2
+chr1 200 250 3 25 + 11 2
+chr1 200 250 3 25 + 12 2
+chr1 200 250 3 25 + 13 2
+chr1 200 250 3 25 + 14 2
+chr1 200 250 3 25 + 15 2
+chr1 200 250 3 25 + 16 2
+chr1 200 250 3 25 + 17 2
+chr1 200 250 3 25 + 18 2
chr1 200 250 3 25 + 19 1
chr1 200 250 3 25 + 20 1
chr1 200 250 3 25 + 21 1
@@ -232,152 +245,152 @@ chr1 200 250 3 25 + 35 1
chr1 200 250 3 25 + 36 1
chr1 200 250 3 25 + 37 1
chr1 200 250 3 25 + 38 1
-chr1 200 250 3 25 + 39 1
-chr1 200 250 3 25 + 40 1
-chr1 200 250 3 25 + 41 1
-chr1 200 250 3 25 + 42 1
-chr1 200 250 3 25 + 43 1
-chr1 200 250 3 25 + 44 1
-chr1 200 250 3 25 + 45 1
-chr1 200 250 3 25 + 46 1
-chr1 200 250 3 25 + 47 1
-chr1 200 250 3 25 + 48 1
-chr1 200 250 3 25 + 49 1
-chr1 200 250 3 25 + 50 1
-chr2 80 130 5 25 - 1 1
-chr2 80 130 5 25 - 2 1
-chr2 80 130 5 25 - 3 1
-chr2 80 130 5 25 - 4 1
-chr2 80 130 5 25 - 5 1
-chr2 80 130 5 25 - 6 1
-chr2 80 130 5 25 - 7 1
-chr2 80 130 5 25 - 8 1
-chr2 80 130 5 25 - 9 1
-chr2 80 130 5 25 - 10 1
-chr2 80 130 5 25 - 11 1
-chr2 80 130 5 25 - 12 1
-chr2 80 130 5 25 - 13 1
-chr2 80 130 5 25 - 14 1
-chr2 80 130 5 25 - 15 1
-chr2 80 130 5 25 - 16 1
-chr2 80 130 5 25 - 17 1
-chr2 80 130 5 25 - 18 1
-chr2 80 130 5 25 - 19 1
-chr2 80 130 5 25 - 20 1
-chr2 80 130 5 25 - 21 1
-chr2 80 130 5 25 - 22 1
-chr2 80 130 5 25 - 23 1
-chr2 80 130 5 25 - 24 1
-chr2 80 130 5 25 - 25 1
-chr2 80 130 5 25 - 26 1
-chr2 80 130 5 25 - 27 1
-chr2 80 130 5 25 - 28 1
-chr2 80 130 5 25 - 29 1
-chr2 80 130 5 25 - 30 1
-chr2 80 130 5 25 - 31 1
-chr2 80 130 5 25 - 32 1
-chr2 80 130 5 25 - 33 1
-chr2 80 130 5 25 - 34 1
-chr2 80 130 5 25 - 35 1
-chr2 80 130 5 25 - 36 1
-chr2 80 130 5 25 - 37 1
-chr2 80 130 5 25 - 38 1
-chr2 80 130 5 25 - 39 1
-chr2 80 130 5 25 - 40 1
-chr2 80 130 5 25 - 41 1
-chr2 80 130 5 25 - 42 1
-chr2 80 130 5 25 - 43 1
-chr2 80 130 5 25 - 44 1
-chr2 80 130 5 25 - 45 1
-chr2 80 130 5 25 - 46 1
-chr2 80 130 5 25 - 47 1
-chr2 80 130 5 25 - 48 1
-chr2 80 130 5 25 - 49 1
-chr2 80 130 5 25 - 50 1
-chr2 150 200 4 25 + 1 1
-chr2 150 200 4 25 + 2 1
-chr2 150 200 4 25 + 3 1
-chr2 150 200 4 25 + 4 1
-chr2 150 200 4 25 + 5 1
-chr2 150 200 4 25 + 6 1
-chr2 150 200 4 25 + 7 1
-chr2 150 200 4 25 + 8 1
-chr2 150 200 4 25 + 9 1
-chr2 150 200 4 25 + 10 1
-chr2 150 200 4 25 + 11 1
-chr2 150 200 4 25 + 12 1
-chr2 150 200 4 25 + 13 1
-chr2 150 200 4 25 + 14 1
-chr2 150 200 4 25 + 15 1
-chr2 150 200 4 25 + 16 1
-chr2 150 200 4 25 + 17 1
-chr2 150 200 4 25 + 18 1
-chr2 150 200 4 25 + 19 1
-chr2 150 200 4 25 + 20 1
-chr2 150 200 4 25 + 21 1
-chr2 150 200 4 25 + 22 1
-chr2 150 200 4 25 + 23 1
-chr2 150 200 4 25 + 24 1
-chr2 150 200 4 25 + 25 1
-chr2 150 200 4 25 + 26 1
-chr2 150 200 4 25 + 27 1
-chr2 150 200 4 25 + 28 1
-chr2 150 200 4 25 + 29 1
-chr2 150 200 4 25 + 30 1
-chr2 150 200 4 25 + 31 2
-chr2 150 200 4 25 + 32 2
-chr2 150 200 4 25 + 33 2
-chr2 150 200 4 25 + 34 2
-chr2 150 200 4 25 + 35 2
-chr2 150 200 4 25 + 36 2
-chr2 150 200 4 25 + 37 2
-chr2 150 200 4 25 + 38 2
-chr2 150 200 4 25 + 39 2
-chr2 150 200 4 25 + 40 2
-chr2 150 200 4 25 + 41 2
-chr2 150 200 4 25 + 42 2
-chr2 150 200 4 25 + 43 2
-chr2 150 200 4 25 + 44 2
-chr2 150 200 4 25 + 45 2
-chr2 150 200 4 25 + 46 2
-chr2 150 200 4 25 + 47 2
-chr2 150 200 4 25 + 48 2
-chr2 150 200 4 25 + 49 2
-chr2 150 200 4 25 + 50 2
-chr2 180 230 2 25 - 1 2
-chr2 180 230 2 25 - 2 2
-chr2 180 230 2 25 - 3 2
-chr2 180 230 2 25 - 4 2
-chr2 180 230 2 25 - 5 2
-chr2 180 230 2 25 - 6 2
-chr2 180 230 2 25 - 7 2
-chr2 180 230 2 25 - 8 2
-chr2 180 230 2 25 - 9 2
-chr2 180 230 2 25 - 10 2
-chr2 180 230 2 25 - 11 2
-chr2 180 230 2 25 - 12 2
-chr2 180 230 2 25 - 13 2
-chr2 180 230 2 25 - 14 2
-chr2 180 230 2 25 - 15 2
-chr2 180 230 2 25 - 16 2
-chr2 180 230 2 25 - 17 2
-chr2 180 230 2 25 - 18 2
-chr2 180 230 2 25 - 19 2
-chr2 180 230 2 25 - 20 2
-chr2 180 230 2 25 - 21 1
-chr2 180 230 2 25 - 22 1
-chr2 180 230 2 25 - 23 1
-chr2 180 230 2 25 - 24 1
-chr2 180 230 2 25 - 25 1
-chr2 180 230 2 25 - 26 1
-chr2 180 230 2 25 - 27 1
-chr2 180 230 2 25 - 28 1
-chr2 180 230 2 25 - 29 1
-chr2 180 230 2 25 - 30 1
-chr2 180 230 2 25 - 31 1
-chr2 180 230 2 25 - 32 1
-chr2 180 230 2 25 - 33 1
-chr2 180 230 2 25 - 34 1
+chr1 200 250 3 25 + 39 0
+chr1 200 250 3 25 + 40 0
+chr1 200 250 3 25 + 41 0
+chr1 200 250 3 25 + 42 0
+chr1 200 250 3 25 + 43 0
+chr1 200 250 3 25 + 44 0
+chr1 200 250 3 25 + 45 0
+chr1 200 250 3 25 + 46 0
+chr1 200 250 3 25 + 47 0
+chr1 200 250 3 25 + 48 0
+chr1 200 250 3 25 + 49 0
+chr1 200 250 3 25 + 50 0
+chr2 80 130 5 25 - 1 4
+chr2 80 130 5 25 - 2 3
+chr2 80 130 5 25 - 3 3
+chr2 80 130 5 25 - 4 3
+chr2 80 130 5 25 - 5 3
+chr2 80 130 5 25 - 6 3
+chr2 80 130 5 25 - 7 3
+chr2 80 130 5 25 - 8 3
+chr2 80 130 5 25 - 9 3
+chr2 80 130 5 25 - 10 3
+chr2 80 130 5 25 - 11 3
+chr2 80 130 5 25 - 12 3
+chr2 80 130 5 25 - 13 3
+chr2 80 130 5 25 - 14 3
+chr2 80 130 5 25 - 15 3
+chr2 80 130 5 25 - 16 3
+chr2 80 130 5 25 - 17 3
+chr2 80 130 5 25 - 18 3
+chr2 80 130 5 25 - 19 3
+chr2 80 130 5 25 - 20 3
+chr2 80 130 5 25 - 21 3
+chr2 80 130 5 25 - 22 3
+chr2 80 130 5 25 - 23 3
+chr2 80 130 5 25 - 24 3
+chr2 80 130 5 25 - 25 3
+chr2 80 130 5 25 - 26 3
+chr2 80 130 5 25 - 27 3
+chr2 80 130 5 25 - 28 3
+chr2 80 130 5 25 - 29 3
+chr2 80 130 5 25 - 30 3
+chr2 80 130 5 25 - 31 3
+chr2 80 130 5 25 - 32 3
+chr2 80 130 5 25 - 33 3
+chr2 80 130 5 25 - 34 3
+chr2 80 130 5 25 - 35 3
+chr2 80 130 5 25 - 36 3
+chr2 80 130 5 25 - 37 3
+chr2 80 130 5 25 - 38 3
+chr2 80 130 5 25 - 39 3
+chr2 80 130 5 25 - 40 3
+chr2 80 130 5 25 - 41 3
+chr2 80 130 5 25 - 42 3
+chr2 80 130 5 25 - 43 3
+chr2 80 130 5 25 - 44 3
+chr2 80 130 5 25 - 45 3
+chr2 80 130 5 25 - 46 3
+chr2 80 130 5 25 - 47 3
+chr2 80 130 5 25 - 48 4
+chr2 80 130 5 25 - 49 4
+chr2 80 130 5 25 - 50 4
+chr2 150 200 4 25 + 1 6
+chr2 150 200 4 25 + 2 6
+chr2 150 200 4 25 + 3 5
+chr2 150 200 4 25 + 4 5
+chr2 150 200 4 25 + 5 5
+chr2 150 200 4 25 + 6 5
+chr2 150 200 4 25 + 7 5
+chr2 150 200 4 25 + 8 5
+chr2 150 200 4 25 + 9 5
+chr2 150 200 4 25 + 10 5
+chr2 150 200 4 25 + 11 5
+chr2 150 200 4 25 + 12 5
+chr2 150 200 4 25 + 13 5
+chr2 150 200 4 25 + 14 6
+chr2 150 200 4 25 + 15 6
+chr2 150 200 4 25 + 16 6
+chr2 150 200 4 25 + 17 6
+chr2 150 200 4 25 + 18 6
+chr2 150 200 4 25 + 19 6
+chr2 150 200 4 25 + 20 6
+chr2 150 200 4 25 + 21 6
+chr2 150 200 4 25 + 22 6
+chr2 150 200 4 25 + 23 6
+chr2 150 200 4 25 + 24 6
+chr2 150 200 4 25 + 25 6
+chr2 150 200 4 25 + 26 6
+chr2 150 200 4 25 + 27 6
+chr2 150 200 4 25 + 28 6
+chr2 150 200 4 25 + 29 6
+chr2 150 200 4 25 + 30 6
+chr2 150 200 4 25 + 31 6
+chr2 150 200 4 25 + 32 6
+chr2 150 200 4 25 + 33 6
+chr2 150 200 4 25 + 34 6
+chr2 150 200 4 25 + 35 6
+chr2 150 200 4 25 + 36 6
+chr2 150 200 4 25 + 37 6
+chr2 150 200 4 25 + 38 6
+chr2 150 200 4 25 + 39 6
+chr2 150 200 4 25 + 40 5
+chr2 150 200 4 25 + 41 5
+chr2 150 200 4 25 + 42 5
+chr2 150 200 4 25 + 43 5
+chr2 150 200 4 25 + 44 5
+chr2 150 200 4 25 + 45 5
+chr2 150 200 4 25 + 46 5
+chr2 150 200 4 25 + 47 5
+chr2 150 200 4 25 + 48 5
+chr2 150 200 4 25 + 49 5
+chr2 150 200 4 25 + 50 5
+chr2 180 230 2 25 - 1 6
+chr2 180 230 2 25 - 2 6
+chr2 180 230 2 25 - 3 6
+chr2 180 230 2 25 - 4 6
+chr2 180 230 2 25 - 5 6
+chr2 180 230 2 25 - 6 6
+chr2 180 230 2 25 - 7 6
+chr2 180 230 2 25 - 8 6
+chr2 180 230 2 25 - 9 6
+chr2 180 230 2 25 - 10 5
+chr2 180 230 2 25 - 11 5
+chr2 180 230 2 25 - 12 5
+chr2 180 230 2 25 - 13 5
+chr2 180 230 2 25 - 14 5
+chr2 180 230 2 25 - 15 5
+chr2 180 230 2 25 - 16 5
+chr2 180 230 2 25 - 17 5
+chr2 180 230 2 25 - 18 5
+chr2 180 230 2 25 - 19 5
+chr2 180 230 2 25 - 20 5
+chr2 180 230 2 25 - 21 5
+chr2 180 230 2 25 - 22 5
+chr2 180 230 2 25 - 23 4
+chr2 180 230 2 25 - 24 4
+chr2 180 230 2 25 - 25 4
+chr2 180 230 2 25 - 26 4
+chr2 180 230 2 25 - 27 3
+chr2 180 230 2 25 - 28 3
+chr2 180 230 2 25 - 29 3
+chr2 180 230 2 25 - 30 3
+chr2 180 230 2 25 - 31 3
+chr2 180 230 2 25 - 32 3
+chr2 180 230 2 25 - 33 2
+chr2 180 230 2 25 - 34 2
chr2 180 230 2 25 - 35 1
chr2 180 230 2 25 - 36 1
chr2 180 230 2 25 - 37 1
@@ -394,50 +407,65 @@ chr2 180 230 2 25 - 47 1
chr2 180 230 2 25 - 48 1
chr2 180 230 2 25 - 49 1
chr2 180 230 2 25 - 50 1" > exp
-$BT coverage -a a.bed -b a.bed -d > obs
+$BT coverage -a a.bed -b b.bed -d > obs
check exp obs
rm exp obs
-
##################################################################
-# Test -s
+# Test mean
##################################################################
echo " coverage.t6...\c"
echo \
-"chr1 20 70 6 25 + 1 50 50 1.0000000
-chr1 50 100 1 25 - 1 50 50 1.0000000
-chr1 200 250 3 25 + 1 50 50 1.0000000
-chr2 80 130 5 25 - 1 50 50 1.0000000
-chr2 150 200 4 25 + 1 50 50 1.0000000
-chr2 180 230 2 25 - 1 50 50 1.0000000" > exp
-$BT coverage -a a.bed -b a.bed -s > obs
+"chr1 20 70 6 25 + 2.0000000
+chr1 50 100 1 25 - 2.2000000
+chr1 200 250 3 25 + 1.3200001
+chr2 80 130 5 25 - 3.0799999
+chr2 150 200 4 25 + 5.5599999
+chr2 180 230 2 25 - 3.4600000" > exp
+$BT coverage -a a.bed -b b.bed -mean > obs
check exp obs
rm exp obs
##################################################################
-# Test -S
+# Test -s
##################################################################
echo " coverage.t7...\c"
echo \
-"chr1 20 70 6 25 + 1 20 50 0.4000000
-chr1 50 100 1 25 - 1 20 50 0.4000000
+"chr1 20 70 6 25 + 2 50 50 1.0000000
+chr1 50 100 1 25 - 1 23 50 0.4600000
chr1 200 250 3 25 + 0 0 50 0.0000000
-chr2 80 130 5 25 - 0 0 50 0.0000000
-chr2 150 200 4 25 + 1 20 50 0.4000000
-chr2 180 230 2 25 - 1 20 50 0.4000000" > exp
-$BT coverage -a a.bed -b a.bed -S > obs
+chr2 80 130 5 25 - 4 50 50 1.0000000
+chr2 150 200 4 25 + 3 50 50 1.0000000
+chr2 180 230 2 25 - 4 34 50 0.6800000" > exp
+$BT coverage -a a.bed -b b.bed -s > obs
check exp obs
rm exp obs
##################################################################
-# Test that -counts, -hist are mutually exclusive options
+# Test -S
##################################################################
echo " coverage.t8...\c"
echo \
-"***** ERROR: -counts, -d, and -hist are mutually exclusive options. *****" > exp
+"chr1 20 70 6 25 + 0 0 50 0.0000000
+chr1 50 100 1 25 - 4 50 50 1.0000000
+chr1 200 250 3 25 + 4 38 50 0.7600000
+chr2 80 130 5 25 - 2 50 50 1.0000000
+chr2 150 200 4 25 + 4 50 50 1.0000000
+chr2 180 230 2 25 - 2 50 50 1.0000000" > exp
+$BT coverage -a a.bed -b b.bed -S > obs
+check exp obs
+rm exp obs
+
+
+##################################################################
+# Test that -counts, -hist are mutually exclusive options
+##################################################################
+echo " coverage.t9...\c"
+echo \
+"***** ERROR: -counts, -d, -mean, and -hist are all mutually exclusive options. *****" > exp
$BT coverage -a a.bed -b b.bed -counts -hist 2>&1 > /dev/null | head -2 | tail -1 | cat - > obs
check exp obs
rm exp obs
@@ -445,9 +473,9 @@ rm exp obs
##################################################################
# Test that -counts, -d are mutually exclusive options
##################################################################
-echo " coverage.t9...\c"
+echo " coverage.t10...\c"
echo \
-"***** ERROR: -counts, -d, and -hist are mutually exclusive options. *****" > exp
+"***** ERROR: -counts, -d, -mean, and -hist are all mutually exclusive options. *****" > exp
$BT coverage -a a.bed -b b.bed -counts -d 2>&1 > /dev/null | head -2 | tail -1 | cat - > obs
check exp obs
rm exp obs
@@ -455,9 +483,24 @@ rm exp obs
##################################################################
# Test that -hist, -d are mutually exclusive options
##################################################################
-echo " coverage.t10...\c"
+echo " coverage.t11...\c"
echo \
-"***** ERROR: -counts, -d, and -hist are mutually exclusive options. *****" > exp
+"***** ERROR: -counts, -d, -mean, and -hist are all mutually exclusive options. *****" > exp
$BT coverage -a a.bed -b b.bed -hist -d 2>&1 > /dev/null | head -2 | tail -1 | cat - > obs
check exp obs
rm exp obs
+
+
+##################################################################
+# Test that -mean, -d are mutually exclusive options
+##################################################################
+echo " coverage.t12...\c"
+echo \
+"***** ERROR: -counts, -d, -mean, and -hist are all mutually exclusive options. *****" > exp
+$BT coverage -a a.bed -b b.bed -mean -d 2>&1 > /dev/null | head -2 | tail -1 | cat - > obs
+check exp obs
+rm exp obs
+
+
+
+