Question: error:[Surjector] could not identify path position of surjected alignment
0
gravatar for LilithElina
8 months ago by
LilithElina10
Germany
LilithElina10 wrote:

This question is a kind of follow-up to this one. I am trying to convert a GAM file output from vg map to BAM for analysis and end up with error:[Surjector] could not identify path position of surjected alignment.

The code I used is now adapted to vg version 1.22.0:

vg mod -X 32 graph.vg > graph_mod.vg
vg index -x graph_mod.xg graph_mod.vg
vg prune -k 16 -e 3 graph_mod.vg > graph_prune.vg
vg index -g graph_mod.gcsa -k 16 graph_prune.vg
vg map -d graph_mod -f reads.fastq.gz > graph_reads.gam
vg surject -x graph_mod.xg -b graph_reads.gam > graph_reads.bam

The mapping ran smoothly, and vg surject creates a BAM file, but still stops almost instantly with the mentioned error message. vg paths -L lists the five reference paths in the xg index and in the vg graph itself.

The stack trace file looks like this:

Crash report for vg v1.22.0 "Rotella"
Stack trace (most recent call last) in thread 6167:
#15   Object "", at 0xffffffffffffffff, in
#14   Object "/lib/x86_64-linux-gnu/libc-2.23.so", at 0x7fda8a74b41c, in __clone
#13   Object "/lib/x86_64-linux-gnu/libpthread-2.23.so", at 0x7fda8cfb36b9, in start_thread
#12   Object "/usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0", at 0x7fda8ac3343d, in
#11   Object "/data3/genome_graphs/vg-v1.22.0/bin/vg", at 0xc4c2a8, in void vg::io::for_each_parallel_impl<vg::Alignment>(std::istream&, std::function<void (vg::Alignment&, vg::Alignment&)> const&, std::function<void (vg::Alignment&)> const&, std::function<bool ()> const&, unsigned long) [clone ._omp_fn.0]
    | Source "/data3/genome_graphs/vg-v1.22.0/include/vg/io/stream.hpp", line 210, in operator()
    |   208:                             handle(obj1.ParseFromString(batch->at(i)));
    |   209:                             handle(obj2.ParseFromString(batch->at(i+1)));
    | > 210:                             lambda2(obj1,obj2);
    |   211:                         }
    |   212:                     } // scope obj1 & obj2
      Source "/usr/include/c++/5/functional", line 2267, in _ZN2vg2io22for_each_parallel_implINS_9AlignmentEEEvRSiRKSt8functionIFvRT_S6_EERKS4_IFvS6_EERKS4_IFbvEEm._omp_fn.0 [0xc4c2a8]
       2264:     {
       2265:       if (_M_empty())
       2266:    __throw_bad_function_call();
      >2267:       return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
       2268:     }
       2269:
       2270: #if __cpp_rtti
#10   Object "/data3/genome_graphs/vg-v1.22.0/bin/vg", at 0xa2dc0b, in std::_Function_handler<void (vg::Alignment&, vg::Alignment&), void vg::io::for_each_parallel<vg::Alignment>(std::istream&, std::function<void (vg::Alignment&)> const&, unsigned long)::{lambda(vg::Alignment&, vg::Alignment&)#1}>::_M_invoke(std::_Any_data const&, vg::Alignment&, vg::Alignment&)
    | Source "/usr/include/c++/5/functional", line 1871, in operator()
    |  1869:       _M_invoke(const _Any_data& __functor, _ArgTypes&&... __args)
    |  1870:       {
    | >1871:    (*_Base::_M_get_pointer(__functor))(
    |  1872:        std::forward<_ArgTypes>(__args)...);
    |  1873:       }
    | Source "/data3/genome_graphs/vg-v1.22.0/include/vg/io/stream.hpp", line 312, in operator()
    |   310:                        const std::function<void(T&)>& lambda1,
    |   311:                        size_t batch_size = 256) {
    | > 312:     std::function<void(T&,T&)> lambda2 = [&lambda1](T& o1, T& o2) { lambda1(o1); lambda1(o2); };
    |   313:     std::function<bool(void)> no_wait = [](void) {return true;};
    |   314:     for_each_parallel_impl(in, lambda2, lambda1, no_wait, batch_size);
      Source "/usr/include/c++/5/functional", line 2267, in _M_invoke [0xa2dc0b]
       2264:     {
       2265:       if (_M_empty())
       2266:    __throw_bad_function_call();
      >2267:       return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
       2268:     }
       2269:
       2270: #if __cpp_rtti
#9    Object "/data3/genome_graphs/vg-v1.22.0/bin/vg", at 0xc4c794, in main_surject(int, char**)::{lambda(std::istream&)#4}::operator()(std::istream&) const::{lambda(vg::Alignment&)#2}::operator()(vg::Alignment) const [clone .constprop.285]
      Source "src/subcommand/surject_main.cpp", line 302, in operator() [0xc4c794]
#8    Object "/data3/genome_graphs/vg-v1.22.0/bin/vg", at 0xea2571, in vg::Surjector::surject(vg::Alignment const&, std::set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool, bool) const
    | Source "src/surjector.cpp", line 26, in ~basic_string
    | Source "/usr/include/c++/5/bits/basic_string.h", line 543, in _M_dispose
    |   541:        */
    |   542:       ~basic_string()
    | > 543:       { _M_dispose(); }
    |   544:
    |   545:       /**
    | Source "/usr/include/c++/5/bits/basic_string.h", line 180, in _M_destroy
    |   178:       {
    |   179:    if (!_M_is_local())
    | > 180:      _M_destroy(_M_allocated_capacity);
    |   181:       }
    | Source "/usr/include/c++/5/bits/basic_string.h", line 185, in deallocate
    |   183:       void
    |   184:       _M_destroy(size_type __size) throw()
    | > 185:       { _Alloc_traits::deallocate(_M_get_allocator(), _M_data(), __size + 1); }
    |   186:
    |   187:       // _M_construct_aux is used to implement the 21.3.1 para 15 which
    | Source "/usr/include/c++/5/bits/alloc_traits.h", line 517, in deallocate
    |   515:       static void
    |   516:       deallocate(allocator_type& __a, pointer __p, size_type __n)
    | > 517:       { __a.deallocate(__p, __n); }
    |   518:
    |   519:       /**
      Source "/usr/include/c++/5/ext/new_allocator.h", line 110, in surject [0xea2571]
        107:       // __p is not permitted to be a null pointer.
        108:       void
        109:       deallocate(pointer __p, size_type)
      > 110:       { ::operator delete(__p); }
        111:
        112:       size_type
        113:       max_size() const _GLIBCXX_USE_NOEXCEPT
#7    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7fda8aa1e486, in _Unwind_Resume
#6    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7fda8aa1df82, in
#5    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21", at 0x7fda8aed3004, in __gxx_personality_v0
#4    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21", at 0x7fda8aed26a8, in
#3    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21", at 0x7fda8aed36b5, in
#2    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21", at 0x7fda8aed584c, in __gnu_cxx::__verbose_terminate_handler()
#1    Object "/lib/x86_64-linux-gnu/libc-2.23.so", at 0x7fda8a67b029, in abort
#0    Object "/lib/x86_64-linux-gnu/libc-2.23.so", at 0x7fda8a679428, in raise
vg • 226 views
ADD COMMENTlink modified 8 months ago • written 8 months ago by LilithElina10
0
gravatar for anovak
8 months ago by
anovak70
United States
anovak70 wrote:

If there are actually no paths embedded in the graph, vg surject can't work. It uses the paths to define the linear coordinate space into which it is translating the mappings. If there are no paths, it doesn't know about any contigs on which the reads could be mapped in the output BAM file, and so it can't process the reads.

You need a graph annotated at least with the reference paths against which you want your reads mapped in your BAM.

ADD COMMENTlink written 8 months ago by anovak70

Thank you! I'm using the graph without added annotation, but the reference annotation is still present. I was just going to post yet another question about that. The reference paths have this format "refseq|NZ_CP020659.1|chromosome" which seems to give vg paths -Q a hard time. That shouldn't be a problem for vg surject, though, right? Anyway, with updating to the latest version I'm not even getting to the mapping step, as you know.

ADD REPLYlink written 8 months ago by LilithElina10

So, I was able to use the graph with the reference paths, but I still get the same error. I'll edit the original question with the workflow adapted to vg 1.22.0.

ADD REPLYlink written 8 months ago by LilithElina10
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 931 users visited in the last hour