diff --git a/Makefile.am b/Makefile.am index 1926745b2..ad2ebdd90 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,8 +1,8 @@ AUTOMAKE_OPTIONS = foreign -SUBDIRS = bwa htslib fermi-lite src +SUBDIRS = bwa fermi-lite src install: - mkdir -p lib && cp src/libseqlib.a fermi-lite/libfml.a bwa/libbwa.a htslib/libhts.a lib + mkdir -p lib && cp src/libseqlib.a fermi-lite/libfml.a bwa/libbwa.a lib seqtools: mkdir -p bin && cd src/seqtools && make && mv seqtools ../../bin diff --git a/Makefile.in b/Makefile.in index bfb586701..09de47ae6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -296,7 +296,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign -SUBDIRS = bwa htslib fermi-lite src +SUBDIRS = bwa fermi-lite src all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -778,7 +778,7 @@ uninstall-am: install: - mkdir -p lib && cp src/libseqlib.a fermi-lite/libfml.a bwa/libbwa.a htslib/libhts.a lib + mkdir -p lib && cp src/libseqlib.a fermi-lite/libfml.a bwa/libbwa.a lib seqtools: mkdir -p bin && cd src/seqtools && make && mv seqtools ../../bin diff --git a/SeqLib/BamHeader.h b/SeqLib/BamHeader.h index 12a2281b0..1d3ea3949 100644 --- a/SeqLib/BamHeader.h +++ b/SeqLib/BamHeader.h @@ -1,10 +1,10 @@ #ifndef SEQLIB_BAM_HEADER_H__ #define SEQLIB_BAM_HEADER_H__ -#include "htslib/htslib/hts.h" -#include "htslib/htslib/sam.h" -#include "htslib/htslib/bgzf.h" -#include "htslib/htslib/kstring.h" +#include +#include +#include +#include #include "SeqLib/SeqLibUtils.h" #include diff --git a/SeqLib/BamReader.h b/SeqLib/BamReader.h index 9113ce8c2..50b602cd9 100644 --- a/SeqLib/BamReader.h +++ b/SeqLib/BamReader.h @@ -174,6 +174,11 @@ class BamReader { */ bool SetMultipleRegions(const GRC& grc); + /** Return the current region index + * @return current region index + */ + size_t GetRegionIdx(); + /** Return if the reader has opened the first file */ bool IsOpen() const { if (m_bams.size()) return m_bams.begin()->second.fp.get() != NULL; return false; } diff --git a/SeqLib/BamRecord.h b/SeqLib/BamRecord.h index 3ad3b4e22..65f73a8b3 100644 --- a/SeqLib/BamRecord.h +++ b/SeqLib/BamRecord.h @@ -10,11 +10,11 @@ #include extern "C" { -#include "htslib/htslib/hts.h" -#include "htslib/htslib/sam.h" -#include "htslib/htslib/bgzf.h" -#include "htslib/htslib/kstring.h" -#include "htslib/htslib/faidx.h" +#include +#include +#include +#include +#include } @@ -665,31 +665,29 @@ class BamRecord { inline int32_t NumSoftClip() const { int32_t p = 0; uint32_t* c = bam_get_cigar(b); - for (size_t i = 0; i < b->core.n_cigar; ++i) - if (bam_cigar_opchr(c[i]) == 'S') - p += bam_cigar_oplen(c[i]); + + p = (((*c) & 0xF) == BAM_CSOFT_CLIP ? ((*c) >> 4) : 0); + c += b->core.n_cigar - 1; + p += (((*c) & 0xF) == BAM_CSOFT_CLIP ? ((*c) >> 4) : 0); + return p; - } + } /** Get the number of hard clipped bases */ inline int32_t NumHardClip() const { int32_t p = 0; uint32_t* c = bam_get_cigar(b); - for (size_t i = 0; i < b->core.n_cigar; ++i) - if (bam_cigar_opchr(c[i]) == 'H') - p += bam_cigar_oplen(c[i]); - return p; - } + p = (((*c) & 0xF) == BAM_CHARD_CLIP ? ((*c) >> 4) : 0); + c += b->core.n_cigar - 1; + p += (((*c) & 0xF) == BAM_CHARD_CLIP ? ((*c) >> 4) : 0); + + return p; + } /** Get the number of clipped bases (hard clipped and soft clipped) */ inline int32_t NumClip() const { - int32_t p = 0; - uint32_t* c = bam_get_cigar(b); - for (size_t i = 0; i < b->core.n_cigar; ++i) - if ( (bam_cigar_opchr(c[i]) == 'S') || (bam_cigar_opchr(c[i]) == 'H') ) - p += bam_cigar_oplen(c[i]); - return p; + return NumSoftClip() + NumHardClip(); } /** Get a string (Z) tag diff --git a/SeqLib/RefGenome.h b/SeqLib/RefGenome.h index d76065a29..297157f8f 100644 --- a/SeqLib/RefGenome.h +++ b/SeqLib/RefGenome.h @@ -5,7 +5,7 @@ #include #include -#include "htslib/htslib/faidx.h" +#include namespace SeqLib { diff --git a/bwa b/bwa index c02766e3c..609311b88 160000 --- a/bwa +++ b/bwa @@ -1 +1 @@ -Subproject commit c02766e3c34ac3f4af9842e20a54b7f9f4b36d0b +Subproject commit 609311b8842244c5c15405b3ea553455f542f786 diff --git a/htslib b/htslib deleted file mode 160000 index 49fdfbda2..000000000 --- a/htslib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 49fdfbda20acbd73303df3c7fef84f2d972c5f8d diff --git a/src/BamReader.cpp b/src/BamReader.cpp index b4aea4490..409c71b5a 100644 --- a/src/BamReader.cpp +++ b/src/BamReader.cpp @@ -141,6 +141,11 @@ void BamReader::Reset() { return false; } + size_t BamReader::GetRegionIdx() { + // this ought to be in sync across all open BAMs + return m_bams.begin()->second.m_region_idx; + } + bool BamReader::Open(const std::string& bam) { // dont open same bam twice diff --git a/src/ReadFilter.cpp b/src/ReadFilter.cpp index 8c7de4781..3c148305c 100644 --- a/src/ReadFilter.cpp +++ b/src/ReadFilter.cpp @@ -1,7 +1,7 @@ #include "SeqLib/ReadFilter.h" #include -#include "htslib/htslib/khash.h" +#include //#define QNAME "D0EN0ACXX111207:7:2306:6903:136511" //#define QFLAG -1