HsHTSLib 1.3.2.3 → 1.3.2.4
raw patch · 3 files changed
+57/−3 lines, 3 filesdep +HsHTSLibdep +tastydep +tasty-goldendep ~basedep ~conduitPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: HsHTSLib, tasty, tasty-golden, tasty-hunit, vector
Dependency ranges changed: base, conduit
API changes (from Hackage documentation)
- Bio.HTS: inline_c_ffi_6989586621679077971 :: Ptr HTSFile -> Ptr Bam' -> IO CInt
- Bio.HTS: inline_c_ffi_6989586621679078141 :: Ptr HTSFile -> Ptr BamHdr -> IO CInt
- Bio.HTS: inline_c_ffi_6989586621679078167 :: Ptr CChar -> IO (Ptr HTSFile)
- Bio.HTS: inline_c_ffi_6989586621679078175 :: Ptr CChar -> IO (Ptr HTSFile)
- Bio.HTS: inline_c_ffi_6989586621679078185 :: Ptr HTSFile -> IO (Ptr BamHdr)
- Bio.HTS: inline_c_ffi_6989586621679078194 :: Ptr HTSFile -> IO ()
- Bio.HTS: inline_c_ffi_6989586621679078222 :: Ptr BamHdr -> IO (Ptr CChar)
- Bio.HTS: inline_c_ffi_6989586621679078231 :: Ptr BamHdr -> IO Word32
- Bio.HTS: inline_c_ffi_6989586621679078421 :: Ptr CInt -> Ptr HTSFile -> IO (Ptr Bam')
- Bio.HTS: inline_c_ffi_6989586621679078433 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078446 :: Ptr BamHdr -> Int32 -> IO (Ptr CChar)
- Bio.HTS: inline_c_ffi_6989586621679078456 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078466 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078476 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078486 :: Ptr Bam' -> IO CInt
- Bio.HTS: inline_c_ffi_6989586621679078497 :: Ptr Bam' -> IO Word16
- Bio.HTS: inline_c_ffi_6989586621679078507 :: Ptr Bam' -> IO Word8
- Bio.HTS: inline_c_ffi_6989586621679078517 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078531 :: Ptr Bam' -> Int32 -> Ptr CChar -> IO ()
- Bio.HTS: inline_c_ffi_6989586621679078541 :: Ptr Bam' -> IO (Ptr CChar)
- Bio.HTS: inline_c_ffi_6989586621679078551 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078560 :: Ptr Bam' -> IO Int8
- Bio.HTS: inline_c_ffi_6989586621679078574 :: Ptr Bam' -> Int32 -> Ptr CChar -> IO ()
- Bio.HTS: inline_c_ffi_6989586621679078584 :: Ptr Bam' -> IO Word16
- Bio.HTS: inline_c_ffi_6989586621679078601 :: Ptr Bam' -> Word16 -> Ptr CInt -> Ptr CChar -> IO ()
- Bio.HTS: inline_c_ffi_6989586621679078613 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078626 :: Ptr BamHdr -> Int32 -> IO (Ptr CChar)
- Bio.HTS: inline_c_ffi_6989586621679078636 :: Ptr Bam' -> IO Int32
- Bio.HTS: inline_c_ffi_6989586621679078646 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079184 :: Ptr HTSFile -> Ptr Bam' -> IO CInt
+ Bio.HTS: inline_c_ffi_6989586621679079386 :: Ptr HTSFile -> Ptr BamHdr -> IO CInt
+ Bio.HTS: inline_c_ffi_6989586621679079412 :: Ptr CChar -> IO (Ptr HTSFile)
+ Bio.HTS: inline_c_ffi_6989586621679079420 :: Ptr CChar -> IO (Ptr HTSFile)
+ Bio.HTS: inline_c_ffi_6989586621679079430 :: Ptr HTSFile -> IO (Ptr BamHdr)
+ Bio.HTS: inline_c_ffi_6989586621679079439 :: Ptr HTSFile -> IO ()
+ Bio.HTS: inline_c_ffi_6989586621679079467 :: Ptr BamHdr -> IO (Ptr CChar)
+ Bio.HTS: inline_c_ffi_6989586621679079476 :: Ptr BamHdr -> IO Word32
+ Bio.HTS: inline_c_ffi_6989586621679079679 :: Ptr CInt -> Ptr HTSFile -> IO (Ptr Bam')
+ Bio.HTS: inline_c_ffi_6989586621679079691 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079704 :: Ptr BamHdr -> Int32 -> IO (Ptr CChar)
+ Bio.HTS: inline_c_ffi_6989586621679079714 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079724 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079734 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079744 :: Ptr Bam' -> IO CInt
+ Bio.HTS: inline_c_ffi_6989586621679079755 :: Ptr Bam' -> IO Word16
+ Bio.HTS: inline_c_ffi_6989586621679079765 :: Ptr Bam' -> IO Word8
+ Bio.HTS: inline_c_ffi_6989586621679079775 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079789 :: Ptr Bam' -> Int32 -> Ptr CChar -> IO ()
+ Bio.HTS: inline_c_ffi_6989586621679079799 :: Ptr Bam' -> IO (Ptr CChar)
+ Bio.HTS: inline_c_ffi_6989586621679079809 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079818 :: Ptr Bam' -> IO Int8
+ Bio.HTS: inline_c_ffi_6989586621679079832 :: Ptr Bam' -> Int32 -> Ptr CChar -> IO ()
+ Bio.HTS: inline_c_ffi_6989586621679079842 :: Ptr Bam' -> IO Word16
+ Bio.HTS: inline_c_ffi_6989586621679079859 :: Ptr Bam' -> Word16 -> Ptr CInt -> Ptr CChar -> IO ()
+ Bio.HTS: inline_c_ffi_6989586621679079871 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079884 :: Ptr BamHdr -> Int32 -> IO (Ptr CChar)
+ Bio.HTS: inline_c_ffi_6989586621679079894 :: Ptr Bam' -> IO Int32
+ Bio.HTS: inline_c_ffi_6989586621679079904 :: Ptr Bam' -> IO Int32
+ Bio.HTS: qualityS :: Bam -> Maybe ByteString
- Bio.HTS.Types: BamFileHandle :: (Ptr HTSFile) -> BamFileHandle
+ Bio.HTS.Types: BamFileHandle :: Ptr HTSFile -> BamFileHandle
- Bio.HTS.Types: BamHeader :: (Ptr BamHdr) -> FileHeader
+ Bio.HTS.Types: BamHeader :: Ptr BamHdr -> FileHeader
- Bio.HTS.Types: Sam :: !ByteString -> !Word16 -> !(Maybe ByteString) -> !Int32 -> !Word8 -> !(Maybe [(Int, Char)]) -> !(Maybe ByteString) -> !Int32 -> !Int32 -> !(Maybe ByteString) -> !(Maybe ByteString) -> Sam
+ Bio.HTS.Types: Sam :: !ByteString -> !Word16 -> !Maybe ByteString -> !Int32 -> !Word8 -> !Maybe [(Int, Char)] -> !Maybe ByteString -> !Int32 -> !Int32 -> !Maybe ByteString -> !Maybe ByteString -> Sam
- Bio.HTS.Types: [samCigar] :: Sam -> !(Maybe [(Int, Char)])
+ Bio.HTS.Types: [samCigar] :: Sam -> !Maybe [(Int, Char)]
- Bio.HTS.Types: [samQual] :: Sam -> !(Maybe ByteString)
+ Bio.HTS.Types: [samQual] :: Sam -> !Maybe ByteString
- Bio.HTS.Types: [samRname] :: Sam -> !(Maybe ByteString)
+ Bio.HTS.Types: [samRname] :: Sam -> !Maybe ByteString
- Bio.HTS.Types: [samRnext] :: Sam -> !(Maybe ByteString)
+ Bio.HTS.Types: [samRnext] :: Sam -> !Maybe ByteString
- Bio.HTS.Types: [samSeq] :: Sam -> !(Maybe ByteString)
+ Bio.HTS.Types: [samSeq] :: Sam -> !Maybe ByteString
Files
- HsHTSLib.cabal +20/−3
- src/Bio/HTS.hs +6/−0
- tests/Main.hs +31/−0
HsHTSLib.cabal view
@@ -1,5 +1,5 @@ name: HsHTSLib-version: 1.3.2.3+version: 1.3.2.4 synopsis: High level bindings to htslib. description: This package provides high level bindings to htslib, a library for processing high throughput DNA sequencing data.@@ -34,7 +34,7 @@ , template-haskell hs-source-dirs: src- extra-libraries: pthread+ extra-libraries: pthread z include-dirs: htslib-1.3.2 @@ -75,11 +75,28 @@ htslib-1.3.2/cram/thread_pool.c htslib-1.3.2/cram/vlen.c htslib-1.3.2/cram/zfio.c- -- htslib-1.3.2/tabix.c -- htslib-1.3.2/htsfile.c default-language: Haskell2010++test-suite tests+ type: exitcode-stdio-1.0+ hs-source-dirs: tests+ main-is: Main.hs+ other-modules:++ default-language: Haskell2010+ build-depends:+ base+ , HsHTSLib+ , bytestring+ , vector+ , tasty+ , tasty-golden+ , tasty-hunit+ , conduit+ , mtl source-repository head type: git
src/Bio/HTS.hs view
@@ -9,6 +9,7 @@ import Control.Monad.Reader import Data.Bits (testBit) import qualified Data.ByteString.Char8 as B+import qualified Data.ByteString as BS import Data.Int import Data.Monoid ((<>)) import Data.Word@@ -212,6 +213,11 @@ [CU.exp| char* {bam_get_qname($(bam1_t* b)) } |] {-# INLINE qName #-} +-- | Human readable quality score which is (Phred base quality + 33).+qualityS :: Bam -> Maybe B.ByteString+qualityS = fmap (BS.map (+33)) . quality++-- | Phred base quality (a sequence of 0xFF if absent). quality :: Bam -> Maybe B.ByteString quality = unsafePerformIO . flip withForeignPtr fn where
+ tests/Main.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE FlexibleContexts #-}+import Test.Tasty+import Test.Tasty.Golden+import Conduit+import Control.Monad.Reader++import Bio.HTS+import Bio.HTS.Types++main :: IO ()+main = defaultMain $ testGroup "Main"+ [ tests ]++tests :: TestTree+tests = goldenVsFile "BAM Read/Write Test" expect output $+ bamFileToSamFile input output+ where+ input = "tests/data/example.bam"+ output = "tests/data/output.sam"+ expect = "tests/data/example.sam"++bamFileToSamFile :: FilePath -- ^ Input bam file+ -> FilePath -- ^ Output Sam file+ -> IO ()+bamFileToSamFile input output = withBamFile input $ \fl ->+ runConduit $ readBam fl .| mapMC f .| unlinesAsciiC .| sinkFile output+ where+ f bam = do+ lift ask >>= \case+ BamHeader hdr -> return $ showSam $ bamToSam hdr bam