vg
vg copied to clipboard
vg convert -x -g doesn't work on minigraph GFA
This has annoyed me a few times. I've never bothered to fix but am posting here to remember. I think the safest thing is to just stop using xg's from_gfa, which not only does not support rGFA (unlike vg's version), but seems to crash as well.
Get graph
wget ftp://ftp.dfci.harvard.edu/pub/hli/minigraph/HPRC-f1g/GRCh38-f1g-90.gfa.gz
gzip -d GRCh38-f1g-90.gfa.gz
GFA->XG conversion (which uses xg's from_gfa()) fails
vg convert -g GRCh38-f1g-90.gfa -x > GRCh38-f1g-90.xg
terminate called after throwing an instance of 'std::invalid_argument'
what(): stol
ERROR: Signal 6 occurred. VG has crashed. Visit https://github.com/vgteam/vg/issues/new/choose to report a bug.
Stack trace path: /tmp/vg_crash_b9GKJp/stacktrace.txt
Please include the stack trace file in your bug report!
Indirect conversion (which uses algorithms::gfa_to_path_handle_graph()) works
vg convert -g GRCh38-f1g-90.gfa -a | vg convert -x - > GRCh38-f1g-90.xg
#11 Object "/cactus/bin/vg", at 0x13b846f, in xg::XG::from_gfa(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
#10 Object "/cactus/bin/vg", at 0x13b5344, in xg::XG::from_enumerators(std::function<void (std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&)> const&, std::function<void (std::function<void (long long const&, bool const&, long long const&, bool const&)> const&)> const&, std::function<void (std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&, bool const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)> const&)> const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
#9 Object "/cactus/bin/vg", at 0x13a7ce9, in std::_Function_handler<void (std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&), xg::XG::from_gfa(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&)#1}>::_M_invoke(std::_Any_data const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&)
#8 Object "/cactus/bin/vg", at 0x1012a9d, in gfak::GFAKluge::for_each_sequence_line_in_file(char const*, std::function<void (gfak::sequence_elem const&)>)
#7 Object "/cactus/bin/vg", at 0x139f312, in std::_Function_handler<void (gfak::sequence_elem const&), xg::XG::from_gfa(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::{lambda(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&)#1}::operator()(std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long const&)> const&) const::{lambda(gfak::sequence_elem)#1}>::_M_invoke(std::_Any_data const&, gfak::sequence_elem const&)
#6 Object "/cactus/bin/vg", at 0x19bdfbe, in std::__throw_invalid_argument(char const*)
#5 Object "/cactus/bin/vg", at 0x1957823, in __cxa_throw
#4 Object "/cactus/bin/vg", at 0x19597f0, in std::terminate()