{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# Language QuasiQuotes #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
module Data.SAM.Version1_6.Read.Parser.Alignment.Base (
parse_SAM_V1_6_Alignment
) where
import Data.SAM.Version1_6.Alignment
import Data.SAM.Version1_6.Read.Error
import Data.SAM.Version1_6.Read.Parser.Alignment.AOPT
import Data.SAM.Version1_6.Read.Parser.Alignment.IOPT
import Data.SAM.Version1_6.Read.Parser.Alignment.FOPT
import Data.SAM.Version1_6.Read.Parser.Alignment.ZOPT
import Data.SAM.Version1_6.Read.Parser.Alignment.HOPT
import Data.SAM.Version1_6.Read.Parser.Alignment.BOPT
import Control.Applicative.Permutations (intercalateEffect,toPermutationWithDefault)
import Data.Attoparsec.ByteString.Char8 as DABC8 (endOfLine,isEndOfLine)
import Data.Attoparsec.ByteString.Lazy as DABL
import qualified Data.ByteString.Char8 as DBC8
import Text.Regex.PCRE.Heavy
parse_SAM_V1_6_Alignment :: Parser SAM_V1_6_Alignment
parse_SAM_V1_6_Alignment :: Parser SAM_V1_6_Alignment
parse_SAM_V1_6_Alignment = do
ByteString
qname <- do ByteString
qnamep <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
qnamep ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[!-?A-~]{1,254}|\*|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_QNAME_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
qnamep
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
flag <- do ByteString
flagp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
flagp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[0-9]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_FLAG_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
flagp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
rname <- do ByteString
rnamep <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
rnamep ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|\*|[0-9A-Za-z!#$%&+.:;?@^_|~-][0-9A-Za-z!#$%&*+.:;=?@^_|~-]*|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_RNAME_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
rnamep
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
pos <- do ByteString
posp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
posp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[0-9]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_POS_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
posp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
mapq <- do ByteString
mapqp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
mapqp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[0-9]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_MAPQ_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
mapqp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
cigar <- do ByteString
cigarp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
cigarp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|\*|([0-9]+[MIDNSHPX=])+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_CIGAR_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
cigarp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
rnext <- do ByteString
rnextp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
rnextp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|\*|=|[0-9A-Za-z!#$%&+.:;?@^_|~-][0-9A-Za-z!#$%&*+.:;=?@^_|~-]*|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_RNEXT_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
rnextp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
pnext <- do ByteString
pnextp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
pnextp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[0-9]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_PNEXT_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
pnextp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
tlen <- do ByteString
tlenp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
tlenp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[-]?[0-9]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_TLEN_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
tlenp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
seq <- do ByteString
seqp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09)
case (ByteString
seqp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|\*|[A-Za-z=.]+|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_SEQ_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
seqp
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
ByteString
qual <- do ByteString
qualp <- (Word8 -> Bool) -> Parser ByteString ByteString
DABL.takeTill (\Word8
x -> Word8
x Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
09 Bool -> Bool -> Bool
|| Word8 -> Bool
isEndOfLine Word8
x)
case (ByteString
qualp ByteString -> Regex -> Bool
forall a. ConvertibleStrings a ByteString => a -> Regex -> Bool
=~ [re|[!-~?]+|\*|]) of
Bool
False -> String -> Parser ByteString ByteString
forall a. String -> Parser ByteString a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail (String -> Parser ByteString ByteString)
-> String -> Parser ByteString ByteString
forall a b. (a -> b) -> a -> b
$ SAM_V1_6_Error -> String
forall a. Show a => a -> String
show SAM_V1_6_Error
SAM_V1_6_Error_Alignment_QUAL_Incorrect_Format
Bool
True ->
ByteString -> Parser ByteString ByteString
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return ByteString
qualp
Maybe Word8
optfields <- Parser (Maybe Word8)
peekWord8
case Maybe Word8
optfields of
Just Word8
10 -> do
()
_ <- Parser ()
endOfLine
SAM_V1_6_Alignment -> Parser SAM_V1_6_Alignment
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return SAM_V1_6_Alignment { sam_v1_6_alignment_qname :: ByteString
sam_v1_6_alignment_qname = ByteString
qname
, sam_v1_6_alignment_flag :: Int
sam_v1_6_alignment_flag = case (ByteString -> Maybe (Int, ByteString)
DBC8.readInt ByteString
flag) of
Maybe (Int, ByteString)
Nothing -> (-Int
1)
Just (Int
flagint,ByteString
_) -> Int
flagint
, sam_v1_6_alignment_rname :: ByteString
sam_v1_6_alignment_rname = ByteString
rname
, sam_v1_6_alignment_pos :: Integer
sam_v1_6_alignment_pos = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
pos) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
posinteger,ByteString
_) -> Integer
posinteger
, sam_v1_6_alignment_mapq :: Int
sam_v1_6_alignment_mapq = case (ByteString -> Maybe (Int, ByteString)
DBC8.readInt ByteString
mapq) of
Maybe (Int, ByteString)
Nothing -> Int
255
Just (Int
mapqint,ByteString
_) -> Int
mapqint
, sam_v1_6_alignment_cigar :: ByteString
sam_v1_6_alignment_cigar = ByteString
cigar
, sam_v1_6_alignment_rnext :: ByteString
sam_v1_6_alignment_rnext = ByteString
rnext
, sam_v1_6_alignment_pnext :: Integer
sam_v1_6_alignment_pnext = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
pnext) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
pnextinteger,ByteString
_) -> Integer
pnextinteger
, sam_v1_6_alignment_tlen :: Integer
sam_v1_6_alignment_tlen = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
tlen) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
tleninteger,ByteString
_) -> Integer
tleninteger
, sam_v1_6_alignment_seq :: ByteString
sam_v1_6_alignment_seq = ByteString
seq
, sam_v1_6_alignment_qual :: ByteString
sam_v1_6_alignment_qual = ByteString
qual
, sam_v1_6_alignment_aopt :: Maybe SAM_V1_6_Alignment_AOPT
sam_v1_6_alignment_aopt = Maybe SAM_V1_6_Alignment_AOPT
forall a. Maybe a
Nothing
, sam_v1_6_alignment_iopt :: Maybe SAM_V1_6_Alignment_IOPT
sam_v1_6_alignment_iopt = Maybe SAM_V1_6_Alignment_IOPT
forall a. Maybe a
Nothing
, sam_v1_6_alignment_fopt :: Maybe SAM_V1_6_Alignment_FOPT
sam_v1_6_alignment_fopt = Maybe SAM_V1_6_Alignment_FOPT
forall a. Maybe a
Nothing
, sam_v1_6_alignment_zopt :: Maybe SAM_V1_6_Alignment_ZOPT
sam_v1_6_alignment_zopt = Maybe SAM_V1_6_Alignment_ZOPT
forall a. Maybe a
Nothing
, sam_v1_6_alignment_hopt :: Maybe SAM_V1_6_Alignment_HOPT
sam_v1_6_alignment_hopt = Maybe SAM_V1_6_Alignment_HOPT
forall a. Maybe a
Nothing
, sam_v1_6_alignment_bopt :: Maybe SAM_V1_6_Alignment_BOPT
sam_v1_6_alignment_bopt = Maybe SAM_V1_6_Alignment_BOPT
forall a. Maybe a
Nothing
}
Maybe Word8
_ -> do
Word8
_ <- Word8 -> Parser Word8
word8 Word8
09
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields <- Parser Word8
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
-> Parser
ByteString
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
forall (m :: * -> *) b a.
Alternative m =>
m b -> Permutation m a -> m a
intercalateEffect (Word8 -> Parser Word8
word8 Word8
09) (Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
-> Parser
ByteString
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
-> Parser
ByteString
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
forall a b. (a -> b) -> a -> b
$
(,,,,,)
(Maybe SAM_V1_6_Alignment_AOPT
-> Maybe SAM_V1_6_Alignment_IOPT
-> Maybe SAM_V1_6_Alignment_FOPT
-> Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_AOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_IOPT
-> Maybe SAM_V1_6_Alignment_FOPT
-> Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe SAM_V1_6_Alignment_AOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_AOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_AOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_AOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_AOPT -> Maybe SAM_V1_6_Alignment_AOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_AOPT -> Maybe SAM_V1_6_Alignment_AOPT)
-> Parser ByteString SAM_V1_6_Alignment_AOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_AOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_AOPT
parse_SAM_V1_6_Alignment_AOPT)
Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_IOPT
-> Maybe SAM_V1_6_Alignment_FOPT
-> Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_IOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_FOPT
-> Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
forall a b.
Permutation (Parser ByteString) (a -> b)
-> Permutation (Parser ByteString) a
-> Permutation (Parser ByteString) b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe SAM_V1_6_Alignment_IOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_IOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_IOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_IOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_IOPT -> Maybe SAM_V1_6_Alignment_IOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_IOPT -> Maybe SAM_V1_6_Alignment_IOPT)
-> Parser ByteString SAM_V1_6_Alignment_IOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_IOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_IOPT
parse_SAM_V1_6_Alignment_IOPT)
Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_FOPT
-> Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_FOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
forall a b.
Permutation (Parser ByteString) (a -> b)
-> Permutation (Parser ByteString) a
-> Permutation (Parser ByteString) b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe SAM_V1_6_Alignment_FOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_FOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_FOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_FOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_FOPT -> Maybe SAM_V1_6_Alignment_FOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_FOPT -> Maybe SAM_V1_6_Alignment_FOPT)
-> Parser ByteString SAM_V1_6_Alignment_FOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_FOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_FOPT
parse_SAM_V1_6_Alignment_FOPT)
Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_ZOPT
-> Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_ZOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
forall a b.
Permutation (Parser ByteString) (a -> b)
-> Permutation (Parser ByteString) a
-> Permutation (Parser ByteString) b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe SAM_V1_6_Alignment_ZOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_ZOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_ZOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_ZOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_ZOPT -> Maybe SAM_V1_6_Alignment_ZOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_ZOPT -> Maybe SAM_V1_6_Alignment_ZOPT)
-> Parser ByteString SAM_V1_6_Alignment_ZOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_ZOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_ZOPT
parse_SAM_V1_6_Alignment_ZOPT)
Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_HOPT
-> Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_HOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
forall a b.
Permutation (Parser ByteString) (a -> b)
-> Permutation (Parser ByteString) a
-> Permutation (Parser ByteString) b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe SAM_V1_6_Alignment_HOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_HOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_HOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_HOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_HOPT -> Maybe SAM_V1_6_Alignment_HOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_HOPT -> Maybe SAM_V1_6_Alignment_HOPT)
-> Parser ByteString SAM_V1_6_Alignment_HOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_HOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_HOPT
parse_SAM_V1_6_Alignment_HOPT)
Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_BOPT
-> (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT))
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_BOPT)
-> Permutation
(Parser ByteString)
(Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
forall a b.
Permutation (Parser ByteString) (a -> b)
-> Permutation (Parser ByteString) a
-> Permutation (Parser ByteString) b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Maybe SAM_V1_6_Alignment_BOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_BOPT)
-> Permutation (Parser ByteString) (Maybe SAM_V1_6_Alignment_BOPT)
forall (m :: * -> *) a.
Alternative m =>
a -> m a -> Permutation m a
toPermutationWithDefault Maybe SAM_V1_6_Alignment_BOPT
forall a. Maybe a
Nothing
(SAM_V1_6_Alignment_BOPT -> Maybe SAM_V1_6_Alignment_BOPT
forall a. a -> Maybe a
Just (SAM_V1_6_Alignment_BOPT -> Maybe SAM_V1_6_Alignment_BOPT)
-> Parser ByteString SAM_V1_6_Alignment_BOPT
-> Parser ByteString (Maybe SAM_V1_6_Alignment_BOPT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser ByteString SAM_V1_6_Alignment_BOPT
parse_SAM_V1_6_Alignment_BOPT)
()
_ <- Parser ()
endOfLine
SAM_V1_6_Alignment -> Parser SAM_V1_6_Alignment
forall a. a -> Parser ByteString a
forall (m :: * -> *) a. Monad m => a -> m a
return SAM_V1_6_Alignment { sam_v1_6_alignment_qname :: ByteString
sam_v1_6_alignment_qname = ByteString
qname
, sam_v1_6_alignment_flag :: Int
sam_v1_6_alignment_flag = case (ByteString -> Maybe (Int, ByteString)
DBC8.readInt ByteString
flag) of
Maybe (Int, ByteString)
Nothing -> (-Int
1)
Just (Int
flagint,ByteString
_) -> Int
flagint
, sam_v1_6_alignment_rname :: ByteString
sam_v1_6_alignment_rname = ByteString
rname
, sam_v1_6_alignment_pos :: Integer
sam_v1_6_alignment_pos = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
pos) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
posinteger,ByteString
_) -> Integer
posinteger
, sam_v1_6_alignment_mapq :: Int
sam_v1_6_alignment_mapq = case (ByteString -> Maybe (Int, ByteString)
DBC8.readInt ByteString
mapq) of
Maybe (Int, ByteString)
Nothing -> Int
255
Just (Int
mapqint,ByteString
_) -> Int
mapqint
, sam_v1_6_alignment_cigar :: ByteString
sam_v1_6_alignment_cigar = ByteString
cigar
, sam_v1_6_alignment_rnext :: ByteString
sam_v1_6_alignment_rnext = ByteString
rnext
, sam_v1_6_alignment_pnext :: Integer
sam_v1_6_alignment_pnext = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
pnext) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
pnextinteger,ByteString
_) -> Integer
pnextinteger
, sam_v1_6_alignment_tlen :: Integer
sam_v1_6_alignment_tlen = case (ByteString -> Maybe (Integer, ByteString)
DBC8.readInteger ByteString
tlen) of
Maybe (Integer, ByteString)
Nothing -> Integer
0
Just (Integer
tleninteger,ByteString
_) -> Integer
tleninteger
, sam_v1_6_alignment_seq :: ByteString
sam_v1_6_alignment_seq = ByteString
seq
, sam_v1_6_alignment_qual :: ByteString
sam_v1_6_alignment_qual = ByteString
qual
, sam_v1_6_alignment_aopt :: Maybe SAM_V1_6_Alignment_AOPT
sam_v1_6_alignment_aopt = (\(Maybe SAM_V1_6_Alignment_AOPT
a,Maybe SAM_V1_6_Alignment_IOPT
_,Maybe SAM_V1_6_Alignment_FOPT
_,Maybe SAM_V1_6_Alignment_ZOPT
_,Maybe SAM_V1_6_Alignment_HOPT
_,Maybe SAM_V1_6_Alignment_BOPT
_) -> Maybe SAM_V1_6_Alignment_AOPT
a) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
, sam_v1_6_alignment_iopt :: Maybe SAM_V1_6_Alignment_IOPT
sam_v1_6_alignment_iopt = (\(Maybe SAM_V1_6_Alignment_AOPT
_,Maybe SAM_V1_6_Alignment_IOPT
i,Maybe SAM_V1_6_Alignment_FOPT
_,Maybe SAM_V1_6_Alignment_ZOPT
_,Maybe SAM_V1_6_Alignment_HOPT
_,Maybe SAM_V1_6_Alignment_BOPT
_) -> Maybe SAM_V1_6_Alignment_IOPT
i) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
, sam_v1_6_alignment_fopt :: Maybe SAM_V1_6_Alignment_FOPT
sam_v1_6_alignment_fopt = (\(Maybe SAM_V1_6_Alignment_AOPT
_,Maybe SAM_V1_6_Alignment_IOPT
_,Maybe SAM_V1_6_Alignment_FOPT
f,Maybe SAM_V1_6_Alignment_ZOPT
_,Maybe SAM_V1_6_Alignment_HOPT
_,Maybe SAM_V1_6_Alignment_BOPT
_) -> Maybe SAM_V1_6_Alignment_FOPT
f) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
, sam_v1_6_alignment_zopt :: Maybe SAM_V1_6_Alignment_ZOPT
sam_v1_6_alignment_zopt = (\(Maybe SAM_V1_6_Alignment_AOPT
_,Maybe SAM_V1_6_Alignment_IOPT
_,Maybe SAM_V1_6_Alignment_FOPT
_,Maybe SAM_V1_6_Alignment_ZOPT
z,Maybe SAM_V1_6_Alignment_HOPT
_,Maybe SAM_V1_6_Alignment_BOPT
_) -> Maybe SAM_V1_6_Alignment_ZOPT
z) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
, sam_v1_6_alignment_hopt :: Maybe SAM_V1_6_Alignment_HOPT
sam_v1_6_alignment_hopt = (\(Maybe SAM_V1_6_Alignment_AOPT
_,Maybe SAM_V1_6_Alignment_IOPT
_,Maybe SAM_V1_6_Alignment_FOPT
_,Maybe SAM_V1_6_Alignment_ZOPT
_,Maybe SAM_V1_6_Alignment_HOPT
h,Maybe SAM_V1_6_Alignment_BOPT
_) -> Maybe SAM_V1_6_Alignment_HOPT
h) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
, sam_v1_6_alignment_bopt :: Maybe SAM_V1_6_Alignment_BOPT
sam_v1_6_alignment_bopt = (\(Maybe SAM_V1_6_Alignment_AOPT
_,Maybe SAM_V1_6_Alignment_IOPT
_,Maybe SAM_V1_6_Alignment_FOPT
_,Maybe SAM_V1_6_Alignment_ZOPT
_,Maybe SAM_V1_6_Alignment_HOPT
_,Maybe SAM_V1_6_Alignment_BOPT
b) -> Maybe SAM_V1_6_Alignment_BOPT
b) (Maybe SAM_V1_6_Alignment_AOPT, Maybe SAM_V1_6_Alignment_IOPT,
Maybe SAM_V1_6_Alignment_FOPT, Maybe SAM_V1_6_Alignment_ZOPT,
Maybe SAM_V1_6_Alignment_HOPT, Maybe SAM_V1_6_Alignment_BOPT)
optionalfields
}