bamaddrg
bamaddrg copied to clipboard
Installation failed on Ubuntu 16.10
I tried to install using git clone --recursive, followed by make, but get the following errors:
/home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::ReadNamesFileReader::Read(std::map<std::__cxx11::basic_string
I have similar problem.
[ 94%] Building CXX object src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_resolve.cpp.o
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::ReadNamesFileReader::Read(std::map<std::__cxx11::basic_string<char>, ReadGroupResolver>&)’:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:401:74: error: no matching function for call to ‘make_pair<std::__cxx11::string, bool>(__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char> > >::value_type&, bool)’
resolver.ReadNames.insert( make_pair<string,bool>(fields[1], true) ) ;
^
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/string:40,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10:
/usr/include/c++/7/bits/stl_pair.h:519:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^~~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:519:5: note: template argument deduction/substitution failed:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:401:74: note: cannot convert ‘fields.std::vector<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char> > >::operator[](1)’ (type ‘__gnu_cxx::__alloc_traits<std::allocator<std::__cxx11::basic_string<char> > >::value_type {aka std::__cxx11::basic_string<char>}’) to type ‘std::__cxx11::basic_string<char>&&’
resolver.ReadNames.insert( make_pair<string,bool>(fields[1], true) ) ;
^
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::StatsFileReader::ParseReadGroupLine(const string&, std::map<std::__cxx11::basic_string<char>, ReadGroupResolver>&)’:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:598:75: error: no matching function for call to ‘make_pair<std::__cxx11::string, ReadGroupResolver>(const string&, ReadGroupResolver&)’
readGroups.insert( make_pair<string, ReadGroupResolver>(name, resolver) );
^
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/string:40,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10:
/usr/include/c++/7/bits/stl_pair.h:519:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^~~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:519:5: note: template argument deduction/substitution failed:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:598:61: note: cannot convert ‘name’ (type ‘const string {aka const std::__cxx11::basic_string<char>}’) to type ‘std::__cxx11::basic_string<char>&&’
readGroups.insert( make_pair<string, ReadGroupResolver>(name, resolver) );
^~~~
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::ResolveToolPrivate::MakeStats()’:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1001:93: error: no matching function for call to ‘make_pair<std::__cxx11::string, bool>(std::__cxx11::string&, const bool&)’
else resolver.ReadNames.insert( make_pair<string, bool>(al.Name, isCurrentMateUnique) );
^
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/string:40,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10:
/usr/include/c++/7/bits/stl_pair.h:519:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^~~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:519:5: note: template argument deduction/substitution failed:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1001:68: note: cannot convert ‘al.BamTools::BamAlignment::Name’ (type ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’) to type ‘std::__cxx11::basic_string<char>&&’
else resolver.ReadNames.insert( make_pair<string, bool>(al.Name, isCurrentMateUnique) );
~~~^~~~
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘void BamTools::ResolveTool::ResolveToolPrivate::ParseHeader(const BamTools::SamHeader&)’:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1033:93: error: no matching function for call to ‘make_pair<std::__cxx11::string, ReadGroupResolver>(const string&, ReadGroupResolver)’
m_readGroups.insert( make_pair<string, ReadGroupResolver>(rg.ID, ReadGroupResolver()) );
^
In file included from /usr/include/c++/7/bits/stl_algobase.h:64:0,
from /usr/include/c++/7/bits/char_traits.h:39,
from /usr/include/c++/7/string:40,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13,
from /home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10:
/usr/include/c++/7/bits/stl_pair.h:519:5: note: candidate: template<class _T1, class _T2> constexpr std::pair<typename std::__decay_and_strip<_Tp>::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)
make_pair(_T1&& __x, _T2&& __y)
^~~~~~~~~
/usr/include/c++/7/bits/stl_pair.h:519:5: note: template argument deduction/substitution failed:
/home/yifang/study/C++/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1033:70: note: cannot convert ‘rg.BamTools::SamReadGroup::ID’ (type ‘const string {aka const std::__cxx11::basic_string<char>}’) to type ‘std::__cxx11::basic_string<char>&&’
m_readGroups.insert( make_pair<string, ReadGroupResolver>(rg.ID, ReadGroupResolver()) );
~~~^~
src/toolkit/CMakeFiles/bamtools_cmd.dir/build.make:254: recipe for target 'src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_resolve.cpp.o' failed
make[3]: *** [src/toolkit/CMakeFiles/bamtools_cmd.dir/bamtools_resolve.cpp.o] Error 1
make[3]: Leaving directory '/home/yifang/study/C++/bamaddrg/bamtools/build'
CMakeFiles/Makefile2:520: recipe for target 'src/toolkit/CMakeFiles/bamtools_cmd.dir/all' failed
make[2]: *** [src/toolkit/CMakeFiles/bamtools_cmd.dir/all] Error 2
make[2]: Leaving directory '/home/yifang/study/C++/bamaddrg/bamtools/build'
Makefile:129: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/yifang/study/C++/bamaddrg/bamtools/build'
Makefile:10: recipe for target 'libbamtools.a' failed
make: *** [libbamtools.a] Error 2
Could you give me any clue please?
Did you manage to fix this problem? am faced with a similar issue....am using ubuntu bionic beaver (18.04 )though
You can try installing bamtools first using conda and Bioconda channel:
conda install -c conda-forge -c bioconda bamtools
If you setup conda properly, bamtools
should now be in your PATH (on linux this is default setup). You can now try compiling bamaddrg
.
Hope it helps.
I dont know if people resolved this - but if you install the latest bamtools
via conda, you can then compile bamaddrg
successfully by removing or commenting out the following rule in the Makefile, so it doesnt try and compile bamtools
again.
libbamtools.a:
cd $(BAMTOOLS_ROOT) && mkdir -p build && cd build && cmake .. && make
cp bamtools/lib/libbamtools.a ./
You then also need to copy the libbamtools.a
from the bamaddrg/bamtools/lib/ directory into the bamaddrg
directory.
After this, you can run make
in the bamaddrg directory.
edit: i struggled to get this to work a second time so i would recommend doing what is suggested by @pmagwene below
If you're on an Ubuntu/Debian derivative and have installed bamtools
and libbamtools-dev
you can build bamaddrg directly without the Makefile as follows:
g++ -O3 bamaddrg.cpp -o bamaddrg -lbamtools -lz -I/usr/include/bamtools