diff --git a/src/utils/Contexts/ContextBase.cpp b/src/utils/Contexts/ContextBase.cpp index 1e426ad0367093be5d6c4798f58f53bf60bc3216..2a2afecec8e62ceecaec010ed607993e67fce060 100644 --- a/src/utils/Contexts/ContextBase.cpp +++ b/src/utils/Contexts/ContextBase.cpp @@ -56,7 +56,8 @@ ContextBase::ContextBase() _keyListOps(NULL), _desiredStrand(FileRecordMergeMgr::ANY_STRAND), _maxDistance(0), - _useMergedIntervals(false) + _useMergedIntervals(false), + _reportPrecision(-1) { _programNames["intersect"] = INTERSECT; @@ -127,10 +128,6 @@ bool ContextBase::parseCmdArgs(int argc, char **argv, int skipFirstArgs) { _argc = argc; _argv = argv; _skipFirstArgs = skipFirstArgs; - if (_argc < 2) { - setShowHelp(true); - return false; - } setProgram(_programNames[argv[0]]); @@ -171,6 +168,9 @@ bool ContextBase::parseCmdArgs(int argc, char **argv, int skipFirstArgs) { else if (strcmp(_argv[_i], "-iobuf") == 0) { if (!handle_iobuf()) return false; } + else if (strcmp(_argv[_i], "-prec") == 0) { + if (!handle_prec()) return false; + } else if (strcmp(_argv[_i], "-header") == 0) { if (!handle_header()) return false; } @@ -213,14 +213,18 @@ bool ContextBase::isValidState() } if (hasColumnOpsMethods()) { - //TBD: Adjust column ops for multiple databases. - //For now, use last file. -// FileRecordMgr *dbFile = getFile(hasIntersectMethods() ? _databaseFileIdx : 0); + // TBD: Adjust column ops for multiple databases. + // For now, use last file. FileRecordMgr *dbFile = getFile(getNumInputFiles()-1); _keyListOps->setDBfileType(dbFile->getFileType()); if (!_keyListOps->isValidColumnOps(dbFile)) { return false; } + //if user specified a precision, pass it to + //keyList ops + if (_reportPrecision != -1) { + _keyListOps->setPrecision(_reportPrecision); + } } return true; } @@ -460,10 +464,33 @@ bool ContextBase::handle_o() markUsed(_i - _skipFirstArgs); _i++; markUsed(_i - _skipFirstArgs); + return true; } - return true; + return false; } +bool ContextBase::handle_prec() +{ + if (!hasColumnOpsMethods()) { + return false; + } + if ((_i+1) < _argc) { + int prec = atoi(_argv[_i + 1]); + if (prec < 1) { + _errorMsg += "\n***** ERROR: -prec must be followed by a positive integer. Exiting. *****"; + return false; + } + _reportPrecision = prec; + markUsed(_i - _skipFirstArgs); + _i++; + markUsed(_i - _skipFirstArgs); + return true; + } + _errorMsg += "\n***** ERROR: -prec must be followed by a positive integer. Exiting. *****"; + return false; +} + + // for col ops, -null is a NULL value assigned // when no overlaps are detected. diff --git a/src/utils/Contexts/ContextBase.h b/src/utils/Contexts/ContextBase.h index 1c6cecbdbe66ab8dafcb11875bf0a9835b2ba331..4c81e6f6ff53deba5b8368082e69fd195c52c0e6 100644 --- a/src/utils/Contexts/ContextBase.h +++ b/src/utils/Contexts/ContextBase.h @@ -143,6 +143,7 @@ public: virtual bool hasColumnOpsMethods() const { return _hasColumnOpsMethods; } const QuickString &getColumnOpsVal(RecordKeyVector &keyList) const; //methods applicable only to column operations. + int getReportPrecision() const { return _reportPrecision; } protected: PROGRAM_TYPE _program; @@ -214,6 +215,8 @@ protected: int _maxDistance; bool _useMergedIntervals; + int _reportPrecision; //used in fields reported from numeric ops from map and merge. + void markUsed(int i) { _argsProcessed[i] = true; } bool isUsed(int i) const { return _argsProcessed[i]; } @@ -249,7 +252,7 @@ protected: virtual bool handle_null(); virtual bool handle_delim(); virtual bool handle_sortout(); - + bool handle_prec(); bool parseIoBufSize(QuickString bufStr); }; diff --git a/src/utils/Contexts/ContextMerge.cpp b/src/utils/Contexts/ContextMerge.cpp index b6391a3ca91635cb16e247b23584f00163ddc99a..3da0d5d573bdebbf8485355f76984b57f4c596fe 100644 --- a/src/utils/Contexts/ContextMerge.cpp +++ b/src/utils/Contexts/ContextMerge.cpp @@ -32,10 +32,6 @@ bool ContextMerge::parseCmdArgs(int argc, char **argv, int skipFirstArgs) _argc = argc; _argv = argv; _skipFirstArgs = skipFirstArgs; - if (_argc < 2) { - setShowHelp(true); - return false; - } setProgram(_programNames[argv[0]]); @@ -79,12 +75,12 @@ bool ContextMerge::isValidState() delete _keyListOps; _keyListOps = NULL; } - if (!ContextBase::isValidState()) { - return false; + + //default to stdin + if (getNumInputFiles() == 0) { + addInputFile("-"); } - if (_files.size() != 1) { - _errorMsg = "\n***** ERROR: input file not specified. *****"; - // Allow only one input file for now + if (!ContextBase::isValidState()) { return false; } diff --git a/src/utils/KeyListOps/KeyListOps.cpp b/src/utils/KeyListOps/KeyListOps.cpp index 531654896363d82a5909f62edf0d5928f03e8b5b..f468d9f0207c119714b965c3961476ad8747f593 100644 --- a/src/utils/KeyListOps/KeyListOps.cpp +++ b/src/utils/KeyListOps/KeyListOps.cpp @@ -7,6 +7,8 @@ #include "KeyListOps.h" #include "FileRecordMgr.h" #include <cmath> //for isnan +#include <sstream> +#include <iomanip> KeyListOps::KeyListOps(): _dbFileType(FileRecordTypeChecker::UNKNOWN_FILE_TYPE) @@ -60,6 +62,7 @@ _dbFileType(FileRecordTypeChecker::UNKNOWN_FILE_TYPE) _columns = "5"; // default to "sum" _operations = "sum"; + _precision = DEFAULT_PRECISION; } @@ -172,7 +175,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -181,7 +184,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -190,7 +193,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -199,7 +202,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -208,7 +211,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -225,7 +228,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -234,7 +237,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -243,7 +246,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -252,7 +255,7 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) if (isnan(val)) { _outVals.append(_methods.getNullValue()); } else { - _outVals.append(val); + _outVals.append(format(val)); } break; @@ -317,6 +320,14 @@ const QuickString & KeyListOps::getOpVals(RecordKeyVector &hits) return _outVals; } +const QuickString &KeyListOps::format(double val) +{ + std::stringstream strmBuf; + strmBuf << std::setprecision (_precision) << val; + _formatStr = strmBuf.str(); + return _formatStr; +} + void KeyListOpsHelp() { cerr << "\t-o\t" << "Specify the operation that should be applied to -c." << endl; diff --git a/src/utils/KeyListOps/KeyListOps.h b/src/utils/KeyListOps/KeyListOps.h index 8262677cd133fe4122be1481c7bb1916e4034e85..ea7ea50877fe836f0fc6c7cf7c84ab1fbbf2cd5d 100644 --- a/src/utils/KeyListOps/KeyListOps.h +++ b/src/utils/KeyListOps/KeyListOps.h @@ -49,6 +49,7 @@ public: bool isValidColumnOps(FileRecordMgr *dbFile); const QuickString &getOpVals(RecordKeyVector &hits); + void setPrecision(int val) { _precision = val; } private: void init(); @@ -65,9 +66,14 @@ private: colOpsType _colOps; QuickString _outVals; + QuickString _formatStr; + int _precision; + + static const int DEFAULT_PRECISION = 10; OP_TYPES getOpCode(const QuickString &operation) const; bool isNumericOp(OP_TYPES op) const; bool isNumericOp(const QuickString &op) const; + const QuickString &format(double val); }; diff --git a/test/jaccard/test-jaccard.sh b/test/jaccard/test-jaccard.sh index b8d626bd4b50e262dd541ddfc5c90060d5d96296..6aea03c6d2c8f276789cfd43d342200f254e65da 100644 --- a/test/jaccard/test-jaccard.sh +++ b/test/jaccard/test-jaccard.sh @@ -119,7 +119,7 @@ rm obs exp echo " jaccard.t11...\c" echo \ "intersection union-intersection jaccard n_intersections -120 290 0.413793 4" >exp +70 340 0.205882 3" >exp $BT jaccard -a aMixedStrands.bed -b bMixedStrands.bed -s > obs check obs exp rm obs exp diff --git a/test/map/test-map.sh b/test/map/test-map.sh index 5db340f9a47ae05e6bc5edf2b1bba0a99b47aa5d..1d94bd49b992e9036716ff56cc10a796c3fcb2f4 100644 --- a/test/map/test-map.sh +++ b/test/map/test-map.sh @@ -773,11 +773,11 @@ rm obs exp ############################################################ echo " map.t51...\c" echo \ -"chr1 0 100 12.9167 +"chr1 0 100 12.91666667 chr1 100 200 0 chr2 0 100 . chr2 100 200 . -chr3 0 100 76.2222 +chr3 0 100 76.22222222 chr3 100 200 0.25" > exp $BT map -a ivls.bed -b values4.bed -c 7 -o stddev > obs check obs exp @@ -792,7 +792,7 @@ echo \ chr1 100 200 . chr2 0 100 . chr2 100 200 . -chr3 0 100 114.333 +chr3 0 100 114.3333333 chr3 100 200 0.5" > exp $BT map -a ivls.bed -b values4.bed -c 7 -o sample_stddev > obs check obs exp @@ -804,7 +804,7 @@ rm obs exp echo " map.t53...\c" echo \ "chr1 10000 12000 2.5 -chr1 15000 20000 11.4444" > exp +chr1 15000 20000 11.44444444" > exp $BT map -a d.bed -b fullFields.bam -c 5 -o mean > obs check exp obs rm exp obs diff --git a/test/merge/bamCol4Mean.txt b/test/merge/bamCol4Mean.txt index c630f665cff622648b24de63618e3481f0e8620f..779cb508e0c6405ffe930259f39e8687219988af 100644 --- a/test/merge/bamCol4Mean.txt +++ b/test/merge/bamCol4Mean.txt @@ -2,7 +2,7 @@ chr1 10003 10143 10024.5 chr1 10358 10428 10358 chr1 11780 11921 11800.5 chr1 11996 12101 11998.5 -chr1 12136 12347 12213.2 +chr1 12136 12347 12213.25 chr1 12400 12503 12401.5 chr1 12635 12779 12661 chr1 12819 12919 12819 @@ -11,8 +11,8 @@ chr1 13165 13287 13176 chr1 13561 13731 13595 chr1 14025 14125 14025 chr1 14221 14340 14230.5 -chr1 14440 14715 14553.7 -chr1 14805 15172 14944.7 +chr1 14440 14715 14553.66667 +chr1 14805 15172 14944.71429 chr1 15250 15350 15250 chr1 15470 15603 15486.5 chr1 15924 16065 15944.5 @@ -30,7 +30,7 @@ chr1 18264 18364 18264 chr1 18577 18742 18610 chr1 19658 19758 19658 chr1 19819 19966 19842.5 -chr1 20059 20320 20143.3 +chr1 20059 20320 20143.33333 chr1 20457 20627 20494 chr1 20641 20741 20641 chr1 20754 20854 20754 @@ -47,7 +47,7 @@ chr1 23130 23228 23130 chr1 23250 23350 23250 chr1 23557 23615 23557 chr1 24000 24120 24010 -chr1 24248 24612 24351.7 +chr1 24248 24612 24351.66667 chr1 24683 24850 24711 chr1 24921 25011 24921 chr1 25055 25291 25128.5 @@ -74,7 +74,7 @@ chr1 32519 32619 32519 chr1 32732 32832 32732 chr1 32926 33120 32973 chr1 33143 33289 33189.5 -chr1 33449 33669 33502.3 +chr1 33449 33669 33502.33333 chr1 33842 33931 33842 chr1 33933 34044 33938.5 chr1 34070 34162 34070 @@ -99,7 +99,7 @@ chr1 44085 44185 44085 chr1 44304 44504 44354 chr1 44688 44788 44688 chr1 45372 45472 45372 -chr1 45738 45867 45750.3 +chr1 45738 45867 45750.33333 chr1 46111 46212 46111.5 chr1 47250 47346 47250 chr1 47593 47693 47593 diff --git a/test/merge/bamCol5Mean.txt b/test/merge/bamCol5Mean.txt index 056a79f175ba30529598f5c752aad0af20b71198..4a82c3073b7ebb076cd42fb09e91f31ad1962079 100644 --- a/test/merge/bamCol5Mean.txt +++ b/test/merge/bamCol5Mean.txt @@ -12,7 +12,7 @@ chr1 13561 13731 2 chr1 14025 14125 3 chr1 14221 14340 14.5 chr1 14440 14715 14.5 -chr1 14805 15172 12.1429 +chr1 14805 15172 12.14285714 chr1 15250 15350 21 chr1 15470 15603 3 chr1 15924 16065 12 @@ -30,7 +30,7 @@ chr1 18264 18364 0 chr1 18577 18742 1.5 chr1 19658 19758 25 chr1 19819 19966 26 -chr1 20059 20320 31.3333 +chr1 20059 20320 31.33333333 chr1 20457 20627 37 chr1 20641 20741 1 chr1 20754 20854 1 @@ -47,8 +47,8 @@ chr1 23130 23228 3 chr1 23250 23350 0 chr1 23557 23615 0 chr1 24000 24120 0.5 -chr1 24248 24612 0.833333 -chr1 24683 24850 0.666667 +chr1 24248 24612 0.8333333333 +chr1 24683 24850 0.6666666667 chr1 24921 25011 1 chr1 25055 25291 1 chr1 25403 25740 1.4 @@ -56,7 +56,7 @@ chr1 25767 25867 3 chr1 26053 26153 1 chr1 26406 26506 1 chr1 26680 26883 0.75 -chr1 27102 27252 0.666667 +chr1 27102 27252 0.6666666667 chr1 27582 27785 1 chr1 27995 28187 1 chr1 28198 28298 13 @@ -74,7 +74,7 @@ chr1 32519 32619 1 chr1 32732 32832 3 chr1 32926 33120 1 chr1 33143 33289 2 -chr1 33449 33669 1.33333 +chr1 33449 33669 1.333333333 chr1 33842 33931 1 chr1 33933 34044 1 chr1 34070 34162 1 @@ -91,7 +91,7 @@ chr1 38283 38380 1 chr1 38609 38709 1 chr1 38980 39088 1 chr1 39099 39199 3 -chr1 39418 39585 1.66667 +chr1 39418 39585 1.666666667 chr1 39920 40020 1 chr1 43646 43746 3 chr1 43974 44074 3 diff --git a/test/merge/bamCol8Mean.txt b/test/merge/bamCol8Mean.txt index 12c62f257a99f92324c501e03c1a3b0e12f85f24..74e39819b7cee9cc70afe9e59848b780d3687430 100644 --- a/test/merge/bamCol8Mean.txt +++ b/test/merge/bamCol8Mean.txt @@ -1,18 +1,18 @@ chr1 10003 10143 10024.5 -chr1 10358 10428 1.35524e+08 +chr1 10358 10428 135524043 chr1 11780 11921 12189 chr1 11996 12101 12401.5 -chr1 12136 12347 12225.8 +chr1 12136 12347 12225.75 chr1 12400 12503 11998.5 -chr1 12635 12779 12504.7 +chr1 12635 12779 12504.66667 chr1 12819 12919 13187 chr1 13039 13139 12681 chr1 13165 13287 13190 chr1 13561 13731 13595 chr1 14025 14125 13629 chr1 14221 14340 14607.5 -chr1 14440 14715 14683.3 -chr1 14805 15172 14904.3 +chr1 14440 14715 14683.33333 +chr1 14805 15172 14904.28571 chr1 15250 15350 14837 chr1 15470 15603 15068.5 chr1 15924 16065 16326 @@ -31,13 +31,13 @@ chr1 18577 18742 18208 chr1 19658 19758 20059 chr1 19819 19966 20224 chr1 20059 20320 20137.5 -chr1 20457 20627 20117.7 +chr1 20457 20627 20117.66667 chr1 20641 20741 21047 chr1 20754 20854 21177 chr1 21047 21139 20641 chr1 21177 21277 20754 chr1 21449 21549 21834 -chr1 21834 22029 22086.2 +chr1 21834 22029 22086.25 chr1 22061 22149 22512 chr1 22242 22448 22052.6 chr1 22512 22566 22061 @@ -47,18 +47,18 @@ chr1 23130 23228 22748 chr1 23250 23350 22870 chr1 23557 23615 24000 chr1 24000 24120 23989 -chr1 24248 24612 24499.3 -chr1 24683 24850 24540.7 +chr1 24248 24612 24499.33333 +chr1 24683 24850 24540.66667 chr1 24921 25011 24512 -chr1 25055 25291 25339.8 +chr1 25055 25291 25339.75 chr1 25403 25740 25455.8 chr1 25767 25867 25403 chr1 26053 26153 25640 chr1 26406 26506 26791 -chr1 26680 26883 26945.2 -chr1 27102 27252 26710.3 +chr1 26680 26883 26945.25 +chr1 27102 27252 26710.33333 chr1 27582 27785 28041.5 -chr1 27995 28187 27905.3 +chr1 27995 28187 27905.33333 chr1 28198 28298 28577 chr1 28439 28545 28031 chr1 28577 28674 28198 @@ -74,7 +74,7 @@ chr1 32519 32619 32926 chr1 32732 32832 33143 chr1 32926 33120 32984 chr1 33143 33289 33150.5 -chr1 33449 33669 33396.3 +chr1 33449 33669 33396.33333 chr1 33842 33931 34268 chr1 33933 34044 33920 chr1 34070 34162 34511 @@ -91,7 +91,7 @@ chr1 38283 38380 37904 chr1 38609 38709 38980 chr1 38980 39088 39013.5 chr1 39099 39199 39488 -chr1 39418 39585 39335.7 +chr1 39418 39585 39335.66667 chr1 39920 40020 39528 chr1 43646 43746 44085 chr1 43974 44074 44404 @@ -105,7 +105,7 @@ chr1 47250 47346 47593 chr1 47593 47693 47250 chr1 47820 47920 48088 chr1 48088 48193 48149 -chr1 48445 48677 48630.7 +chr1 48445 48677 48630.66667 chr1 48681 48781 49092 chr1 48832 48932 48445 chr1 48967 49067 48577 diff --git a/test/merge/bamCol9Mean.txt b/test/merge/bamCol9Mean.txt index 214bbe0aa61fd0aefad93a7df3202e7ac541621c..90cbb567e6d74c622c55272368616c5a1dad3833 100644 --- a/test/merge/bamCol9Mean.txt +++ b/test/merge/bamCol9Mean.txt @@ -4,7 +4,7 @@ chr1 11780 11921 488.5 chr1 11996 12101 503 chr1 12136 12347 1 chr1 12400 12503 -503 -chr1 12635 12779 -174.333 +chr1 12635 12779 -174.3333333 chr1 12819 12919 468 chr1 13039 13139 -458 chr1 13165 13287 14 @@ -12,7 +12,7 @@ chr1 13561 13731 0 chr1 14025 14125 -496 chr1 14221 14340 474 chr1 14440 14715 164 -chr1 14805 15172 -54.7143 +chr1 14805 15172 -54.71428571 chr1 15250 15350 -513 chr1 15470 15603 -518 chr1 15924 16065 481.5 @@ -30,8 +30,8 @@ chr1 18264 18364 478 chr1 18577 18742 -501.5 chr1 19658 19758 501 chr1 19819 19966 477.5 -chr1 20059 20320 -6.83333 -chr1 20457 20627 -471.667 +chr1 20059 20320 -6.833333333 +chr1 20457 20627 -471.6666667 chr1 20641 20741 498 chr1 20754 20854 523 chr1 21047 21139 -498 @@ -47,8 +47,8 @@ chr1 23130 23228 -480 chr1 23250 23350 -480 chr1 23557 23615 503 chr1 24000 24120 -1 -chr1 24248 24612 173.167 -chr1 24683 24850 -191.333 +chr1 24248 24612 173.1666667 +chr1 24683 24850 -191.3333333 chr1 24921 25011 -499 chr1 25055 25291 261.25 chr1 25403 25740 -107 @@ -56,9 +56,9 @@ chr1 25767 25867 -464 chr1 26053 26153 -513 chr1 26406 26506 477 chr1 26680 26883 266.75 -chr1 27102 27252 -514.667 +chr1 27102 27252 -514.6666667 chr1 27582 27785 503.75 -chr1 27995 28187 -166.333 +chr1 27995 28187 -166.3333333 chr1 28198 28298 476 chr1 28439 28545 -508.5 chr1 28577 28674 -476 @@ -74,7 +74,7 @@ chr1 32519 32619 507 chr1 32732 32832 511 chr1 32926 33120 3 chr1 33143 33289 -39 -chr1 33449 33669 -135.333 +chr1 33449 33669 -135.3333333 chr1 33842 33931 526 chr1 33933 34044 -16.5 chr1 34070 34162 536 diff --git a/test/merge/precisionTest2.bed b/test/merge/precisionTest2.bed new file mode 100644 index 0000000000000000000000000000000000000000..75bd7d70698cb307f2a4ed30a4d28649f61dba28 --- /dev/null +++ b/test/merge/precisionTest2.bed @@ -0,0 +1,5 @@ +chr1 5333587 5344172 line1 0 - 5334680 5344172 +chr1 5481008 5484749 line2 0 - 5481796 5484749 +chr1 5481008 5484749 line3 0 - 5481796 5484749 +chr1 5481008 5484749 line4 0 - 5481796 5484749 +chr1 6763278 6766882 line5 0 - 7766544 6766882 diff --git a/test/merge/test-merge.sh b/test/merge/test-merge.sh index 6488991a0448ca4a6ae9f7520ed097540ec3f119..86dff76062ee72a5cf27cd4ee64655ecaaf6aea9 100644 --- a/test/merge/test-merge.sh +++ b/test/merge/test-merge.sh @@ -542,3 +542,43 @@ echo \ $BT merge -i vcfSVtest.vcf > obs check exp obs rm obs exp + + +########################################################### +# Test that stdin is used by default +########################################################### +echo " merge.t45...\c" +echo \ +"chr1 10 20 +chr1 30 100" >exp +cat a.bed | $BT merge > obs +check exp obs +rm obs exp + + +########################################################### +# Test that precision default is high enough for +# formatting not to give scientific notation +########################################################### +echo " merge.t46...\c" +echo \ +"chr1 5333587 5344172 5344172 +chr1 5481008 5484749 16454247 +chr1 6763278 6766882 6766882" > exp +$BT merge -i precisionTest2.bed -c 8 -o sum> obs +check exp obs +rm obs exp + + +########################################################### +# Test that user can specify a lower precision +########################################################### +echo " merge.t47...\c" +echo \ +"chr1 5333587 5344172 5.3442e+06 +chr1 5481008 5484749 1.6454e+07 +chr1 6763278 6766882 6.7669e+06" > exp +$BT merge -i precisionTest2.bed -c 8 -o sum -prec 5 > obs +check exp obs +rm obs exp +