test/bam_read_filter.cc

Code
Comments
Other
Rev Date Author Line
2994 10 Mar 13 peter 1 // $Id$
2994 10 Mar 13 peter 2 //
3999 08 Oct 20 peter 3 // Copyright (C) 2013, 2014, 2020 Peter Johansson
2994 10 Mar 13 peter 4 //
2994 10 Mar 13 peter 5 // This program is free software; you can redistribute it and/or modify
2994 10 Mar 13 peter 6 // it under the terms of the GNU General Public License as published by
2994 10 Mar 13 peter 7 // the Free Software Foundation; either version 3 of the License, or
2994 10 Mar 13 peter 8 // (at your option) any later version.
2994 10 Mar 13 peter 9 //
2994 10 Mar 13 peter 10 // This program is distributed in the hope that it will be useful, but
2994 10 Mar 13 peter 11 // WITHOUT ANY WARRANTY; without even the implied warranty of
2994 10 Mar 13 peter 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2994 10 Mar 13 peter 13 // General Public License for more details.
2994 10 Mar 13 peter 14 //
2994 10 Mar 13 peter 15 // You should have received a copy of the GNU General Public License
2994 10 Mar 13 peter 16 // along with this program. If not, see <http://www.gnu.org/licenses/>.
2994 10 Mar 13 peter 17
2994 10 Mar 13 peter 18 #include <config.h>
2994 10 Mar 13 peter 19
2994 10 Mar 13 peter 20 #include "Suite.h"
2994 10 Mar 13 peter 21
3883 24 Mar 20 peter 22 #ifdef YAT_HAVE_HTSLIB
2994 10 Mar 13 peter 23 #include "yat/omic/BamFile.h"
2994 10 Mar 13 peter 24 #include "yat/omic/BamRead.h"
2994 10 Mar 13 peter 25 #include "yat/omic/BamReadFilter.h"
2994 10 Mar 13 peter 26 #include "yat/omic/BamReadIterator.h"
2994 10 Mar 13 peter 27 #endif
2994 10 Mar 13 peter 28
2994 10 Mar 13 peter 29 #include <boost/iterator/filter_iterator.hpp>
2994 10 Mar 13 peter 30
2994 10 Mar 13 peter 31 #include <algorithm>
2994 10 Mar 13 peter 32 #include <cassert>
2994 10 Mar 13 peter 33 #include <string>
2994 10 Mar 13 peter 34 #include <vector>
2994 10 Mar 13 peter 35
2994 10 Mar 13 peter 36 using namespace theplu::yat;
2994 10 Mar 13 peter 37
2994 10 Mar 13 peter 38 void test1(test::Suite& suite);
2994 10 Mar 13 peter 39
2994 10 Mar 13 peter 40 int main(int argc, char* argv[])
2994 10 Mar 13 peter 41 {
3201 03 May 14 peter 42   test::Suite suite(argc, argv, true);
3883 24 Mar 20 peter 43 #ifdef YAT_HAVE_HTSLIB
2994 10 Mar 13 peter 44   test1(suite);
2994 10 Mar 13 peter 45 #endif
2994 10 Mar 13 peter 46   return suite.return_value();
2994 10 Mar 13 peter 47 }
2994 10 Mar 13 peter 48
3883 24 Mar 20 peter 49 #ifdef YAT_HAVE_HTSLIB
2994 10 Mar 13 peter 50 using namespace omic;
2994 10 Mar 13 peter 51
2994 10 Mar 13 peter 52 void test1(test::Suite& suite)
2994 10 Mar 13 peter 53 {
2994 10 Mar 13 peter 54   std::string file = "../../data/foo.sorted.bam";
2994 10 Mar 13 peter 55
2994 10 Mar 13 peter 56   InBamFile in;
2994 10 Mar 13 peter 57   in.open(file);
2994 10 Mar 13 peter 58   BamReadIterator begin(in);
2994 10 Mar 13 peter 59   BamReadIterator end;
2994 10 Mar 13 peter 60
2994 10 Mar 13 peter 61   BamReadFilter filter(20, BAM_DEF_MASK | BAM_FMUNMAP, BAM_FPROPER_PAIR);
2994 10 Mar 13 peter 62   std::vector<BamRead> result;
2994 10 Mar 13 peter 63   std::copy(boost::make_filter_iterator(filter, begin, end),
2994 10 Mar 13 peter 64             boost::make_filter_iterator(filter, end),
2994 10 Mar 13 peter 65             back_inserter(result));
2994 10 Mar 13 peter 66   suite.out() << result.size() << "\n";
2994 10 Mar 13 peter 67   suite.add(result.size()==710);
2994 10 Mar 13 peter 68 }
2994 10 Mar 13 peter 69 #endif