{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# Language QuasiQuotes #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
module Data.BAM.Version1_6.Read.Parser.BAM.Alignment.Base (
parse_BAM_V1_6_BAM_Alignment
) where
import Data.BAM.Version1_6.BAM.Alignment
import Data.BAM.Version1_6.BAM.Alignment.OptionalFields.Base
import Data.BAM.Version1_6.Read.Error
import Data.BAM.Version1_6.Internal
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.Internal
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.AOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.BigCOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.BigIOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.BigSOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.SmallCOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.SmallIOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.SmallSOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.FOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.ZOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.HOPT
import Data.BAM.Version1_6.Read.Parser.BAM.Alignment.OptionalFields.BOPT
import Data.Attoparsec.ByteString.Lazy as DABL
import Data.ByteString as DB hiding (intercalate,map)
import Data.List (intercalate)
import Data.Sequence as DSeq (empty,fromList,singleton,Seq(..))
parse_BAM_V1_6_BAM_Alignment :: Parser BAM_V1_6_BAM_Alignment
parse_BAM_V1_6_BAM_Alignment :: Parser BAM_V1_6_BAM_Alignment
parse_BAM_V1_6_BAM_Alignment = do
ByteString
block_size <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
refID <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
pos <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
l_read_name <-
Int -> Parser ByteString
DABL.take Int
1
ByteString
mapq <-
Int -> Parser ByteString
DABL.take Int
1
ByteString
bin <-
Int -> Parser ByteString
DABL.take Int
2
ByteString
n_cigar_op <-
Int -> Parser ByteString
DABL.take Int
2
ByteString
flag <-
Int -> Parser ByteString
DABL.take Int
2
ByteString
l_seq <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
next_refID <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
next_pos <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
tlen <-
Int -> Parser ByteString
DABL.take Int
4
ByteString
read_name <-
Int -> Parser ByteString
DABL.take
( Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word8 -> Int) -> Word8 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_read_name :: Int
)
ByteString
cigar <-
Int -> Parser ByteString
DABL.take
( ( ( Word16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word16 -> Int) -> Word16 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
n_cigar_op
) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) :: Int
)
ByteString
seq <-
Int -> Parser ByteString
DABL.take
( ( ( ( Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1
) Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2
) :: Int
)
ByteString
qual <-
Int -> Parser ByteString
DABL.take
( Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq :: Int
)
let bytesuptooptionalfields :: Int
bytesuptooptionalfields = Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
1 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
Int
4 Int -> Int -> Int
forall a. Num a => a -> a -> a
+
( Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word8 -> Int) -> Word8 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_read_name :: Int
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+
( ( ( Word16 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word16 -> Int) -> Word16 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
n_cigar_op
) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) :: Int
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+
( ( ( ( Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1
) Int -> Int -> Int
forall a. Integral a => a -> a -> a
`div` Int
2
) :: Int
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+
( Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq
) :: Int
let block_size_int :: Int
block_size_int = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
block_size :: Int
case (Int
bytesuptooptionalfields Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
block_size_int) of
Bool
True ->
BAM_V1_6_BAM_Alignment -> Parser BAM_V1_6_BAM_Alignment
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return BAM_V1_6_BAM_Alignment
{ bam_v1_6_bam_alignment_block_size :: Word32
bam_v1_6_bam_alignment_block_size = [Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
block_size
, bam_v1_6_bam_alignment_refID :: Int32
bam_v1_6_bam_alignment_refID = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
refID
, bam_v1_6_bam_alignment_pos :: Int32
bam_v1_6_bam_alignment_pos = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
pos
, bam_v1_6_bam_alignment_l_read_name :: Word8
bam_v1_6_bam_alignment_l_read_name = [Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_read_name
, bam_v1_6_bam_alignment_mapq :: Word8
bam_v1_6_bam_alignment_mapq = [Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
mapq
, bam_v1_6_bam_alignment_bin :: Word16
bam_v1_6_bam_alignment_bin = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
bin
, bam_v1_6_bam_alignment_n_cigar_op :: Word16
bam_v1_6_bam_alignment_n_cigar_op = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
n_cigar_op
, bam_v1_6_bam_alignment_flag :: Word16
bam_v1_6_bam_alignment_flag = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
flag
, bam_v1_6_bam_alignment_l_seq :: Word32
bam_v1_6_bam_alignment_l_seq = [Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq
, bam_v1_6_bam_alignment_next_refID :: Int32
bam_v1_6_bam_alignment_next_refID = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
next_refID
, bam_v1_6_bam_alignment_next_pos :: Int32
bam_v1_6_bam_alignment_next_pos = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
next_pos
, bam_v1_6_bam_alignment_tlen :: Int32
bam_v1_6_bam_alignment_tlen = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
tlen
, bam_v1_6_bam_alignment_read_name :: ByteString
bam_v1_6_bam_alignment_read_name = ByteString
read_name
, bam_v1_6_bam_alignment_cigar :: Seq Word32
bam_v1_6_bam_alignment_cigar = [Word32] -> Seq Word32
forall a. [a] -> Seq a
DSeq.fromList ([Word32] -> Seq Word32) -> [Word32] -> Seq Word32
forall a b. (a -> b) -> a -> b
$
(ByteString -> Word32) -> [ByteString] -> [Word32]
forall a b. (a -> b) -> [a] -> [b]
map ([Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32)
-> (ByteString -> [Word8]) -> ByteString -> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
DB.unpack) ([ByteString] -> [Word32]) -> [ByteString] -> [Word32]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> [ByteString]
splitByteString Int
4
ByteString
cigar
, bam_v1_6_bam_alignment_seq :: Seq Word8
bam_v1_6_bam_alignment_seq = [Word8] -> Seq Word8
forall a. [a] -> Seq a
DSeq.fromList ([Word8] -> Seq Word8) -> [Word8] -> Seq Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
decodeSeqField ByteString
seq
, bam_v1_6_bam_alignment_qual :: ByteString
bam_v1_6_bam_alignment_qual = ByteString
qual
, bam_v1_6_bam_alignment_optionalfields :: Seq BAM_V1_6_BAM_Alignment_OptionalFields
bam_v1_6_bam_alignment_optionalfields = BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a
DSeq.singleton
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
}
Bool
False -> do
Seq BAM_V1_6_BAM_Alignment_OptionalFields
optionalfieldbytes <-
Int -> Int -> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields)
parse_BAM_V1_6_BAM_Alignment_OptionalFields Int
block_size_int
Int
bytesuptooptionalfields
BAM_V1_6_BAM_Alignment -> Parser BAM_V1_6_BAM_Alignment
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return BAM_V1_6_BAM_Alignment
{ bam_v1_6_bam_alignment_block_size :: Word32
bam_v1_6_bam_alignment_block_size = [Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
block_size
, bam_v1_6_bam_alignment_refID :: Int32
bam_v1_6_bam_alignment_refID = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
refID
, bam_v1_6_bam_alignment_pos :: Int32
bam_v1_6_bam_alignment_pos = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
pos
, bam_v1_6_bam_alignment_l_read_name :: Word8
bam_v1_6_bam_alignment_l_read_name = [Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_read_name
, bam_v1_6_bam_alignment_mapq :: Word8
bam_v1_6_bam_alignment_mapq = [Word8] -> Word8
word8sToWord8LE ([Word8] -> Word8) -> [Word8] -> Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
mapq
, bam_v1_6_bam_alignment_bin :: Word16
bam_v1_6_bam_alignment_bin = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
bin
, bam_v1_6_bam_alignment_n_cigar_op :: Word16
bam_v1_6_bam_alignment_n_cigar_op = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
n_cigar_op
, bam_v1_6_bam_alignment_flag :: Word16
bam_v1_6_bam_alignment_flag = [Word8] -> Word16
word8sToWord16LE ([Word8] -> Word16) -> [Word8] -> Word16
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
flag
, bam_v1_6_bam_alignment_l_seq :: Word32
bam_v1_6_bam_alignment_l_seq = [Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
l_seq
, bam_v1_6_bam_alignment_next_refID :: Int32
bam_v1_6_bam_alignment_next_refID = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
next_refID
, bam_v1_6_bam_alignment_next_pos :: Int32
bam_v1_6_bam_alignment_next_pos = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
next_pos
, bam_v1_6_bam_alignment_tlen :: Int32
bam_v1_6_bam_alignment_tlen = [Word8] -> Int32
word8sToInt32LE ([Word8] -> Int32) -> [Word8] -> Int32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack ByteString
tlen
, bam_v1_6_bam_alignment_read_name :: ByteString
bam_v1_6_bam_alignment_read_name = ByteString
read_name
, bam_v1_6_bam_alignment_cigar :: Seq Word32
bam_v1_6_bam_alignment_cigar = [Word32] -> Seq Word32
forall a. [a] -> Seq a
DSeq.fromList ([Word32] -> Seq Word32) -> [Word32] -> Seq Word32
forall a b. (a -> b) -> a -> b
$
(ByteString -> Word32) -> [ByteString] -> [Word32]
forall a b. (a -> b) -> [a] -> [b]
map ([Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32)
-> (ByteString -> [Word8]) -> ByteString -> Word32
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
DB.unpack) ([ByteString] -> [Word32]) -> [ByteString] -> [Word32]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> [ByteString]
splitByteString Int
4
ByteString
cigar
, bam_v1_6_bam_alignment_seq :: Seq Word8
bam_v1_6_bam_alignment_seq = [Word8] -> Seq Word8
forall a. [a] -> Seq a
DSeq.fromList ([Word8] -> Seq Word8) -> [Word8] -> Seq Word8
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
decodeSeqField ByteString
seq
, bam_v1_6_bam_alignment_qual :: ByteString
bam_v1_6_bam_alignment_qual = ByteString
qual
, bam_v1_6_bam_alignment_optionalfields :: Seq BAM_V1_6_BAM_Alignment_OptionalFields
bam_v1_6_bam_alignment_optionalfields = Seq BAM_V1_6_BAM_Alignment_OptionalFields
optionalfieldbytes
}
where
parse_BAM_V1_6_BAM_Alignment_OptionalFields :: Int
-> Int
-> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields)
parse_BAM_V1_6_BAM_Alignment_OptionalFields :: Int -> Int -> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields)
parse_BAM_V1_6_BAM_Alignment_OptionalFields Int
block_size_int
Int
bytesuptooptionalfields = do
ByteString
optionalfieldbytes' <-
Int -> Parser ByteString
DABL.take (Int -> Parser ByteString) -> Int -> Parser ByteString
forall a b. (a -> b) -> a -> b
$
Int
block_size_int Int -> Int -> Int
forall a. Num a => a -> a -> a
-
Int
bytesuptooptionalfields
Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields)
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return (Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields))
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Parser (Seq BAM_V1_6_BAM_Alignment_OptionalFields)
forall a b. (a -> b) -> a -> b
$
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ByteString
optionalfieldbytes'
where
parse_OptionalFields :: DB.ByteString
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields :: ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ByteString
bs =
case ByteString -> Bool
DB.null ByteString
bs of
Bool
True ->
Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. Seq a
DSeq.empty
Bool
False ->
case ByteString -> Int -> Maybe Word8
DB.indexMaybe ByteString
bs Int
2 of
Maybe Word8
Nothing ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Index_Missing
Just Word8
0x41 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing AOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x63 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing SmallCOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x43 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BigCOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x69 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
7
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing SmallIOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
7
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x49 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
7
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BigIOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
7
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x73 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
5
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing SmallSOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
5
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x53 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
-> ByteString
-> Result BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
5
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BigSOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
5
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x66 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
7
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing FOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop Int
7
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x5A ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Word8 -> ByteString -> ByteString
takeUpTo Word8
0x00
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing ZOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Word8 -> ByteString -> ByteString
dropUpTo Word8
0x00
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x48 ->
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Word8 -> ByteString -> ByteString
takeUpTo Word8
0x00
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing HOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
parsedbs
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Maybe a
Nothing
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Word8 -> ByteString -> ByteString
dropUpTo Word8
0x00
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Just Word8
0x42 ->
case ByteString -> Int -> Maybe Word8
DB.indexMaybe ByteString
bs Int
3 of
Maybe Word8
Nothing ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Missing_Type
Just Word8
boptcharacter ->
case Word8
boptcharacter of
Word8
0x63 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
1
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
1
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x43 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
1
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
1
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x69 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x49 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x73 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x53 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
2
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
0x66 -> do
let boptcount :: Int
boptcount = Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Word32 -> Int) -> Word32 -> Int
forall a b. (a -> b) -> a -> b
$
[Word8] -> Word32
word8sToWord32LE ([Word8] -> Word32) -> [Word8] -> Word32
forall a b. (a -> b) -> a -> b
$
ByteString -> [Word8]
DB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take Int
4 (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.drop Int
4
ByteString
bs
case ( Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> ByteString -> Result BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. Parser a -> ByteString -> Result a
DABL.parse Parser BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parse_BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
( ByteString -> ByteString
DB.fromStrict (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
$
Int -> ByteString -> ByteString
DB.take
( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
) of
Fail ByteString
_
[[Char]]
ctxs
[Char]
err ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
[Char] -> [Char]
forall a. Show a => a -> [Char]
show ([Char] -> [Char]) -> [Char] -> [Char]
forall a b. (a -> b) -> a -> b
$ [Char]
"Error while parsing BOPT field." [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Parsing contexts: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
([Char] -> [[Char]] -> [Char]
forall a. [a] -> [[a]] -> [a]
intercalate [Char]
", " [[Char]]
ctxs) [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"\n" [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
"Error message: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++
[Char]
err
Done ByteString
remainingbytes
BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs -> do
let strictremainingbytes :: ByteString
strictremainingbytes = ByteString -> ByteString
DB.toStrict ByteString
remainingbytes
case ByteString -> Bool
DB.null ByteString
strictremainingbytes of
Bool
True ->
BAM_V1_6_BAM_Alignment_OptionalFields
{ bam_v1_6_bam_alignment_optionalfields_aopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
bam_v1_6_bam_alignment_optionalfields_aopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_AOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
bam_v1_6_bam_alignment_optionalfields_smallcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigcopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
bam_v1_6_bam_alignment_optionalfields_bigcopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigCOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smalliopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
bam_v1_6_bam_alignment_optionalfields_smalliopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigiopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
bam_v1_6_bam_alignment_optionalfields_bigiopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigIOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_smallsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
bam_v1_6_bam_alignment_optionalfields_smallsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_SmallSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bigsopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
bam_v1_6_bam_alignment_optionalfields_bigsopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BigSOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_fopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
bam_v1_6_bam_alignment_optionalfields_fopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_FOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_zopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
bam_v1_6_bam_alignment_optionalfields_zopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_ZOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_hopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
bam_v1_6_bam_alignment_optionalfields_hopt = Maybe BAM_V1_6_BAM_Alignment_OptionalFields_HOPT
forall a. Maybe a
Nothing
, bam_v1_6_bam_alignment_optionalfields_bopt :: Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
bam_v1_6_bam_alignment_optionalfields_bopt = BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
-> Maybe BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
forall a. a -> Maybe a
Just BAM_V1_6_BAM_Alignment_OptionalFields_BOPT
parsedbs
}
BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
-> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. a -> Seq a -> Seq a
DSeq.:<|
ByteString -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
parse_OptionalFields ( Int -> ByteString -> ByteString
DB.drop ( ( Int
boptcount Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
4
) Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
)
ByteString
bs
)
Bool
False ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Remaining_Bytes
Word8
_ ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_BOPT_Missing_Type
Maybe Word8
_ ->
[Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a. HasCallStack => [Char] -> a
error ([Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields)
-> [Char] -> Seq BAM_V1_6_BAM_Alignment_OptionalFields
forall a b. (a -> b) -> a -> b
$
BAM_V1_6_Read_Error -> [Char]
forall a. Show a => a -> [Char]
show BAM_V1_6_Read_Error
BAM_V1_6_Read_Error_Alignment_OptionalFields_Missing_Type