ekg / bamaddrg

adds sample names and read-group (RG) tags to BAM alignments
MIT License
51 stars 13 forks source link

Installation failed on Ubuntu 16.10 #7

Open JHereward opened 7 years ago

JHereward commented 7 years ago

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, ReadGroupResolver>&)’: /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:401:74: error: no matching function for call to ‘make_pair(__gnu_cxx::alloc_traits<std::allocator<std::cxx11::basic_string > >::value_type&, bool)’ resolver.ReadNames.insert( make_pair<string,bool>(fields[1], true) ) ; ^ In file included from /usr/include/c++/6/bits/stl_algobase.h:64:0, from /usr/include/c++/6/bits/char_traits.h:39, from /usr/include/c++/6/string:40, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10: /usr/include/c++/6/bits/stl_pair.h:493: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++/6/bits/stl_pair.h:493:5: note: template argument deduction/substitution failed: /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:401:74: note: cannot convert ‘fields.std::vector<_Tp, _Alloc>::operator[]<std::cxx11::basic_string, std::allocator<std::cxx11::basic_string > >(1ul)’ (type ‘__gnu_cxx::alloc_traits<std::allocator<std::cxx11::basic_string > >::value_type {aka std::cxx11::basic_string}’) to type ‘std::cxx11::basic_string&&’ resolver.ReadNames.insert( make_pair<string,bool>(fields[1], true) ) ; ^ /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::StatsFileReader::ParseReadGroupLine(const string&, std::map<std::cxx11::basic_string, ReadGroupResolver>&)’: /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:598:75: error: no matching function for call to ‘make_pair(const string&, ReadGroupResolver&)’ readGroups.insert( make_pair<string, ReadGroupResolver>(name, resolver) ); ^ In file included from /usr/include/c++/6/bits/stl_algobase.h:64:0, from /usr/include/c++/6/bits/char_traits.h:39, from /usr/include/c++/6/string:40, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10: /usr/include/c++/6/bits/stl_pair.h:493: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++/6/bits/stl_pair.h:493:5: note: template argument deduction/substitution failed: /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:598:61: note: cannot convert ‘name’ (type ‘const string {aka const std::cxx11::basic_string}’) to type ‘std::cxx11::basic_string&&’ readGroups.insert( make_pair<string, ReadGroupResolver>(name, resolver) ); ^~~~ /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘bool BamTools::ResolveTool::ResolveToolPrivate::MakeStats()’: /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1001:93: error: no matching function for call to ‘make_pair(std::__cxx11::string&, const bool&)’ else resolver.ReadNames.insert( make_pair<string, bool>(al.Name, isCurrentMateUnique) ); ^ In file included from /usr/include/c++/6/bits/stl_algobase.h:64:0, from /usr/include/c++/6/bits/char_traits.h:39, from /usr/include/c++/6/string:40, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13, from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10: /usr/include/c++/6/bits/stl_pair.h:493: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++/6/bits/stl_pair.h:493:5: note: template argument deduction/substitution failed: /home/wfl/programs/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}’) to type ‘std::__cxx11::basic_string&&’ else resolver.ReadNames.insert( make_pair<string, bool>(al.Name, isCurrentMateUnique) );


/home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp: In member function ‘void BamTools::ResolveTool::ResolveToolPrivate::ParseHeader(const BamTools::SamHeader&)’:
/home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:1033:93: error: no matching function for call to ‘make_pair(const string&, ReadGroupResolver)’
         m_readGroups.insert( make_pair<string, ReadGroupResolver>(rg.ID, ReadGroupResolver()) );
                                                                                             ^
In file included from /usr/include/c++/6/bits/stl_algobase.h:64:0,
                 from /usr/include/c++/6/bits/char_traits.h:39,
                 from /usr/include/c++/6/string:40,
                 from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_tool.h:14,
                 from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.h:13,
                 from /home/wfl/programs/bamaddrg/bamtools/src/toolkit/bamtools_resolve.cpp:10:
/usr/include/c++/6/bits/stl_pair.h:493: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++/6/bits/stl_pair.h:493:5: note:   template argument deduction/substitution failed:
/home/wfl/programs/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/wfl/programs/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/wfl/programs/bamaddrg/bamtools/build'
Makefile:127: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/wfl/programs/bamaddrg/bamtools/build'
Makefile:10: recipe for target 'libbamtools.a' failed
make: *** [libbamtools.a] Error 2
yifangt commented 6 years ago

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?

zkidiavai commented 5 years ago

Did you manage to fix this problem? am faced with a similar issue....am using ubuntu bionic beaver (18.04 )though

janxkoci commented 4 years ago

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.

sanjaynagi commented 4 years ago

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

pmagwene commented 3 years ago

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