/** biobambam Copyright (C) 2009-2014 German Tischler Copyright (C) 2011-2014 Genome Research Limited This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . **/ #include #include int main(int argc, char * argv[]) { try { libmaus2::util::ArgInfo const arginfo(argc,argv); std::string const fn1 = arginfo.stringRestArg(0); std::string const fn2 = arginfo.stringRestArg(1); libmaus2::bambam::BamDecoder bamdec1(fn1); libmaus2::bambam::BamDecoder bamdec2(fn2); libmaus2::bambam::BamHeader const & header1(bamdec1.getHeader()); libmaus2::bambam::BamHeader const & header2(bamdec2.getHeader()); libmaus2::bambam::BamAlignment const & al1 = bamdec1.getAlignment(); libmaus2::bambam::BamAlignment const & al2 = bamdec2.getAlignment(); uint64_t lcnt = 0; while ( bamdec1.readAlignment() ) { if ( ! bamdec2.readAlignment() ) { libmaus2::exception::LibMausException lme; lme.getStream() << "EOF on second file\n"; lme.finish(); throw lme; } std::string const s1 = al1.formatAlignment(header1); std::string const s2 = al2.formatAlignment(header2); if ( s1 != s2 ) { libmaus2::exception::LibMausException lme; lme.getStream() << "Difference in line " << lcnt << "\n" << s1 << "\n" << s2 << "\n"; lme.finish(); throw lme; } lcnt += 1; } if ( bamdec2.readAlignment() ) { libmaus2::exception::LibMausException lme; lme.getStream() << "EOF on first file\n"; lme.finish(); throw lme; } return EXIT_SUCCESS; } catch(std::exception const & ex) { std::cerr << ex.what() << std::endl; return EXIT_FAILURE; } }