HsHTSLib 1.3.2.0 → 1.3.2.1
raw patch · 4 files changed
+61/−175 lines, 4 filesdep ~inline-c
Dependency ranges changed: inline-c
Files
- HsHTSLib.cabal +3/−5
- src/Bio/HTS.c +0/−167
- src/Bio/HTS.hs +54/−3
- src/Bio/HTS/Types.hs +4/−0
HsHTSLib.cabal view
@@ -1,5 +1,5 @@ name: HsHTSLib-version: 1.3.2.0+version: 1.3.2.1 synopsis: High level bindings to htslib. description: This package provides high level bindings to htslib, a library for processing high throughput DNA sequencing data.@@ -7,7 +7,7 @@ license-file: LICENSE author: Kai Zhang maintainer: kai@kzhang.org-copyright: (c) 2016 Kai Zhang+copyright: (c) 2016-2017 Kai Zhang category: Bio build-type: Simple cabal-version: >=1.10@@ -29,7 +29,7 @@ , bytestring-lexing , containers , conduit-combinators- , inline-c+ , inline-c >=0.6 && <0.7 , mtl , template-haskell @@ -39,8 +39,6 @@ htslib-1.3.2 c-sources:- src/Bio/HTS.c- htslib-1.3.2/bgzf.c htslib-1.3.2/bgzip.c htslib-1.3.2/faidx.c
− src/Bio/HTS.c
@@ -1,167 +0,0 @@--#include "htslib/sam.h"--int inline_c_Bio_HTS_0_0efc6161c1b66bc79e862910b9e93f1d32ddc02d(htsFile * fp_inline_c_0, bam1_t * b_inline_c_1) {-return ( bam_write1(fp_inline_c_0->fp.bgzf, b_inline_c_1) );-}---int inline_c_Bio_HTS_1_0c54bc94ad2e32d428064e2a5c26a7036890b9a6(htsFile * fp_inline_c_0, bam_hdr_t * hdr_inline_c_1) {-return (- bam_hdr_write(fp_inline_c_0->fp.bgzf, hdr_inline_c_1) );-}---htsFile * inline_c_Bio_HTS_2_07f3fede9c57363b6e41738becd5a00d64df9d5c(char * fn_27_inline_c_0) {-return ( hts_open(fn_27_inline_c_0, "r") );-}---htsFile * inline_c_Bio_HTS_3_4af84655e4829571c79edc68791d221a719c60ab(char * fn_27_inline_c_0) {-return ( hts_open(fn_27_inline_c_0, "wb") );-}---void inline_c_Bio_HTS_4_d667db7c61cb0de3c96f1d806701fe63606a1af0(htsFile * h_inline_c_0) {- hts_close(h_inline_c_0) ;-}---bam_hdr_t * inline_c_Bio_HTS_5_9a30278929e5b8570bc58dc24e83fd868ec2513f(htsFile * h_inline_c_0) {-return ( bam_hdr_read(h_inline_c_0->fp.bgzf) );-}---char * inline_c_Bio_HTS_6_5a31ba58a253c55850867b8802710825075bca03(bam_hdr_t * hdr_inline_c_0) {-return ( hdr_inline_c_0->text );-}---bam1_t * inline_c_Bio_HTS_7_25f5b2f49b2eac08644b77f5a1c27030b81e5dc3(int * r_inline_c_0, htsFile * h_inline_c_1) {-- bam1_t *b = bam_init1();- *r_inline_c_0 = bam_read1(h_inline_c_1->fp.bgzf, b);- return b;- -}---int32_t inline_c_Bio_HTS_8_8e12d9d09c24fcc6b41593e5bc03c97f756f6da1(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.tid );-}---char * inline_c_Bio_HTS_9_31676430ec791ba4f73764dc21c992d6d39307fc(bam_hdr_t * h_inline_c_0, int32_t i_inline_c_1) {-return ( h_inline_c_0->target_name[i_inline_c_1] );-}---int32_t inline_c_Bio_HTS_10_c89b42fc83db79c1cd226594b3a86cd92b81f38b(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.pos );-}---int32_t inline_c_Bio_HTS_11_cc329ca55a7e13133af0b3dbb6abb3edc854b65e(bam1_t * b_inline_c_0) {-return ( bam_endpos(b_inline_c_0) );-}---int32_t inline_c_Bio_HTS_12_6fb2dbf3d90d4141663e524757f874dcf05a03e4(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.l_qseq );-}---int inline_c_Bio_HTS_13_44d7a287b2cc95c82e760427675196e1ba7261a1(bam1_t * b_inline_c_0) {-return (bam_is_rev(b_inline_c_0) );-}---uint16_t inline_c_Bio_HTS_14_12453aaa173031b617539dcd57698955b11bd327(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.flag );-}---uint8_t inline_c_Bio_HTS_15_49728fef988bc0954110504a26677faa43ce6ce9(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.qual );-}---int32_t inline_c_Bio_HTS_16_6fb2dbf3d90d4141663e524757f874dcf05a03e4(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.l_qseq );-}---void inline_c_Bio_HTS_17_ed1829c64b8823aa1711ba319219f175ed965ce4(bam1_t * b_inline_c_0, int32_t l_inline_c_1, char * str_inline_c_2) {-- int32_t i;- uint8_t *s = bam_get_seq(b_inline_c_0);- for (i = 0; i < l_inline_c_1; ++i)- str_inline_c_2[i] = "=ACMGRSVTWYHKDBN"[bam_seqi(s, i)];- -}---char * inline_c_Bio_HTS_18_7083ac4175bb445932400343a035586aa327afa8(bam1_t * b_inline_c_0) {-return (bam_get_qname(b_inline_c_0) );-}---int32_t inline_c_Bio_HTS_19_6fb2dbf3d90d4141663e524757f874dcf05a03e4(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.l_qseq );-}---int8_t inline_c_Bio_HTS_20_ff7eee4e1210259019f9cd0f9e269fdcf8ed1666(bam1_t * b_inline_c_0) {-- uint8_t *s = bam_get_qual(b_inline_c_0);- return (s[0] == 0xff);- -}---void inline_c_Bio_HTS_21_4b537c6c8c081040b4dd320c93ee949f58ac34df(bam1_t * b_inline_c_0, int32_t l_inline_c_1, char * str_inline_c_2) {-- int32_t i;- uint8_t *s = bam_get_qual(b_inline_c_0);- for (i = 0; i < l_inline_c_1; ++i)- str_inline_c_2[i] = s[i];- -}---uint16_t inline_c_Bio_HTS_22_ba4509ac6cfa51e21b3315e1bc0c79664332c151(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.n_cigar );-}---void inline_c_Bio_HTS_23_04238a6d67efdaba04e6fe62c62067daa422dedb(bam1_t * b_inline_c_0, uint16_t n_inline_c_1, int * num_inline_c_2, char * str_inline_c_3) {-- uint16_t i;- uint32_t *cigar = bam_get_cigar(b_inline_c_0);- for (i = 0; i < n_inline_c_1; ++i) {- num_inline_c_2[i] = bam_cigar_oplen(cigar[i]);- str_inline_c_3[i] = bam_cigar_opchr(cigar[i]);- }- -}---int32_t inline_c_Bio_HTS_24_a6dc5594b24fbf473396136e59bcee0228785fc4(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.mtid );-}---char * inline_c_Bio_HTS_25_31676430ec791ba4f73764dc21c992d6d39307fc(bam_hdr_t * h_inline_c_0, int32_t i_inline_c_1) {-return ( h_inline_c_0->target_name[i_inline_c_1] );-}---int32_t inline_c_Bio_HTS_26_54a6e402cf38aa9b617612b54be97e879e2b17b7(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.mpos );-}---int32_t inline_c_Bio_HTS_27_14020e59f59859519591c231f45ae2ab8f85c395(bam1_t * b_inline_c_0) {-return ( b_inline_c_0->core.isize );-}-
src/Bio/HTS.hs view
@@ -7,6 +7,7 @@ import Conduit import Control.Monad import Control.Monad.State+import Data.Bits (testBit) import qualified Data.ByteString.Char8 as B import Data.Int import Data.Monoid ((<>))@@ -84,9 +85,11 @@ BamHeader <$> [CU.exp| bam_hdr_t* { bam_hdr_read($(htsFile* h)->fp.bgzf) } |] showBamHeader :: FileHeader -> B.ByteString-showBamHeader (BamHeader hdr) = unsafePerformIO $ join $ B.packCString <$>- [CU.exp| char* { $(bam_hdr_t* hdr)->text } |]-showBamHeader _ = ""+showBamHeader (BamHeader hdr) = unsafePerformIO $ do+ ptr <- [CU.exp| char* { $(bam_hdr_t* hdr)->text } |]+ l <- [CU.exp| uint32_t { $(bam_hdr_t* hdr)->l_text } |]+ B.packCStringLen (ptr, fromIntegral l)+showBamHeader _ = error "No Bam Header was found." data SortOrder = Unknown | Unsorted@@ -289,3 +292,51 @@ bamToSam :: Ptr BamHdr -> Bam -> Sam bamToSam h b = Sam (qName b) (flag b) (getChr h b) (position b) (mapq b) (cigar b) (mateChr h b) (matePos b) (tLen b) (getSeq b) (quality b)++-- | Template having multiple segments in sequencing+hasMultiSegments :: Word16 -> Bool+hasMultiSegments f = testBit f 1++-- | Each segment properly aligned according to the aligner+isProperAligned :: Word16 -> Bool+isProperAligned f = testBit f 2++-- | Segment unmapped+isUnmapped :: Word16 -> Bool+isUnmapped f = testBit f 3++-- | Next segment in the template unmapped+isNextUnmapped :: Word16 -> Bool+isNextUnmapped f = testBit f 4++-- | SEQ being reverse complemented+isRC :: Word16 -> Bool+isRC f = testBit f 5++-- | SEQ of the next segment in the template being reverse complemented+isNextRC :: Word16 -> Bool+isNextRC f = testBit f 6++-- | The first segment in the template+isFirstSegment :: Word16 -> Bool+isFirstSegment f = testBit f 7++-- | The last segment in the template+isLastSegment :: Word16 -> Bool+isLastSegment f = testBit f 8++-- | Secondary alignment+isSecondary :: Word16 -> Bool+isSecondary f = testBit f 9++-- | Not passing filters, such as platform/vendor quality controls+isBadQual :: Word16 -> Bool+isBadQual f = testBit f 10++-- | PCR or optical duplicate+isDup :: Word16 -> Bool+isDup f = testBit f 11++-- | Supplementary alignment+isSupplementary :: Word16 -> Bool+isSupplementary f = testBit f 12
src/Bio/HTS/Types.hs view
@@ -11,6 +11,7 @@ , Bam , Bam' , Sam(..)+ , Flag(..) , showSam ) where @@ -37,6 +38,9 @@ data HTSFile newtype BamFileHandle = BamFileHandle (Ptr HTSFile)++-- | SAM record flag+newtype Flag = Flag Word16 htsCtx :: C.Context htsCtx = mempty