vg icon indicating copy to clipboard operation
vg copied to clipboard

vg convert -x -g doesn't work on minigraph GFA

Open glennhickey opened this issue 4 years ago • 0 comments

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()

glennhickey avatar Jul 28 '21 19:07 glennhickey