Difference between revisions of "BamUtil: FAQ"
From Genome Analysis Wiki
Jump to navigationJump to searchLine 38: | Line 38: | ||
:# Run <code>'''make clean; make'''</code> in both libStatGen and bamUtil | :# Run <code>'''make clean; make'''</code> in both libStatGen and bamUtil | ||
:# The optimized executable is <code>'''bamUtil/bin/bam'''</code> | :# The optimized executable is <code>'''bamUtil/bin/bam'''</code> | ||
+ | |||
+ | |||
+ | = BamUtil: stats = | ||
+ | ==Overflow on the pileup buffer: specifiedPosition = ####, pileup buffer start position: ####, pileup buffer end position: ####== | ||
+ | <pre> | ||
+ | Exiting due to ERROR: | ||
+ | Overflow on the pileup buffer: specifiedPosition = 93252, pileup buffer start position: 92227, pileup buffer end position: 93251 | ||
+ | </pre> | ||
+ | :By default, bam stats assumes that a single read covers less than 1024 reference bases. | ||
+ | :This type of error appears if a read is longer than that. This is most likely to happen if you have large skipped regions in your CIGARs ('N's). | ||
+ | :You need to increase the size of the pileup buffer to cover the largest number of reference bases a single read covers. | ||
+ | |||
+ | :To fix this problem, use the <code>--bufferSize 3000</code> parameter, replacing 3000 by the appropriate number to handle the largest size of the reference covered by a read. You can increase this to a large number - it will just take up more memory. | ||
+ | |||
+ | :Future versions of bamUtil will print an additional error message including the recordName and CIGAR of the record that failed. You can use the CIGAR to come up with a better setting for <code>--bufferSize</code>, although keep in mind that future records could cover even a larger number of bases than that failing record. | ||
+ | |||
+ | :To print all of the Cigars in the file that contain an 'N' (skip), you can use (replace test.bam with your bam file): | ||
+ | ../bin/bam findCigars --noph --cskip --in test.bam --out - |grep -v "^@" |cut -f 6 | ||
+ | :This may help to determine a setting for <code>--bufferSize</code>. |
Latest revision as of 13:04, 23 September 2014
For problems with libStatGen, see LibStatGen Troubleshooting
Compile Problems
HashErrorModel.cpp:96: error: ‘class std::unordered_map, std::equal_to, std::allocator > >’ has no member named ‘at’
- Error:
HashErrorModel.cpp: In member function ‘uint8_t HashErrorModel::getQemp(BaseData&)’: HashErrorModel.cpp:96: error: ‘class std::unordered_map, std::equal_to, std::allocator > >’ has no member named ‘at’ make[2]: *** [../obj/HashErrorModel.o] Error 1
- HashErrorModel by default uses an unordered_map which is only found in C++11/C++0x.
- The code attempts to automatically detect whether or not you have C++11/C++0x by checking if the gcc version > X4.3.0.
- If you see this failure, that means this check did not properly work and you will need to manually disable the C++11/C++0x code. There are a couple of ways to do this:
- Update bamUtil/Makefile.inc, line 7, change
CXX11_AVAIL ?= 1
toCXX11_AVAIL = 0
- Set CXX11_AVAIL to 0 on the command line:
make CXX11_AVAIL=0
- Set CXX11_AVAIL = 0 in your environment
By making one of these changes, the code should compile and use map instead of unordered_map.
ld: lto: could not merge in ../obj/BamExecutable.o because Unknown instruction for architecture x86_64
- ERROR:
ld: lto: could not merge in ../obj/BamExecutable.o because Unknown instruction for architecture x86_64 collect2: ld returned 1 exit status make[2]: *** [../bin/bam] Error 1 make[1]: *** [src] Error 2 make: *** [bamUtil/] Error 2
- This error was seen when running on Mac OS X 10.7.5 on a 64-bit kernel with gcc/g++: i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
- The error appears to be due to the default build optimization: -O4
- If you see this error, try compiling for debug (optimization -O0):
make debug
- The debug executable is:
bamUtil/bin/debug/bam
- If the debug compile worked and you would prefer an optimized executable (runs a little faster), then update the optimization flag to -O3:
- Open libStatGen/Makefiles/Makefile.include
- Change
OPTFLAG_OPT?=-O4
toOPTFLAG_OPT?=-O3
- Run
make clean; make
in both libStatGen and bamUtil - The optimized executable is
bamUtil/bin/bam
BamUtil: stats
Overflow on the pileup buffer: specifiedPosition = ####, pileup buffer start position: ####, pileup buffer end position: ####
Exiting due to ERROR: Overflow on the pileup buffer: specifiedPosition = 93252, pileup buffer start position: 92227, pileup buffer end position: 93251
- By default, bam stats assumes that a single read covers less than 1024 reference bases.
- This type of error appears if a read is longer than that. This is most likely to happen if you have large skipped regions in your CIGARs ('N's).
- You need to increase the size of the pileup buffer to cover the largest number of reference bases a single read covers.
- To fix this problem, use the
--bufferSize 3000
parameter, replacing 3000 by the appropriate number to handle the largest size of the reference covered by a read. You can increase this to a large number - it will just take up more memory.
- Future versions of bamUtil will print an additional error message including the recordName and CIGAR of the record that failed. You can use the CIGAR to come up with a better setting for
--bufferSize
, although keep in mind that future records could cover even a larger number of bases than that failing record.
- To print all of the Cigars in the file that contain an 'N' (skip), you can use (replace test.bam with your bam file):
../bin/bam findCigars --noph --cskip --in test.bam --out - |grep -v "^@" |cut -f 6
- This may help to determine a setting for
--bufferSize
.