hs-samtools 0.7.0.0 → 0.8.0.0
raw patch · 26 files changed
+1266/−432 lines, 26 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.SAM.Version1_6.Header.RG: [sam_v1_6_read_group_identifer] :: SAM_V1_6_Read_Group -> SAM_V1_6_Read_Group_Identifier
- Data.SAM.Version1_6.Header.SQ: [sam_v1_6_reference_sequence_dictionary_reference_alternative_locus] :: SAM_V1_6_Reference_Sequence_Dictionary -> Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus
- Data.SAM.Version1_6.Header.SQ: [sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names] :: SAM_V1_6_Reference_Sequence_Dictionary -> Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names
+ Data.SAM.Version1_6.Alignment.AOPT: SAM_V1_6_Alignment_AOPT :: ByteString -> ByteString -> SAM_V1_6_Alignment_AOPT
+ Data.SAM.Version1_6.Alignment.AOPT: [sam_v1_6_alignment_aopt_tag] :: SAM_V1_6_Alignment_AOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.AOPT: [sam_v1_6_alignment_aopt_value] :: SAM_V1_6_Alignment_AOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.AOPT: data SAM_V1_6_Alignment_AOPT
+ Data.SAM.Version1_6.Alignment.AOPT: instance GHC.Classes.Eq Data.SAM.Version1_6.Alignment.AOPT.SAM_V1_6_Alignment_AOPT
+ Data.SAM.Version1_6.Alignment.AOPT: instance GHC.Generics.Generic Data.SAM.Version1_6.Alignment.AOPT.SAM_V1_6_Alignment_AOPT
+ Data.SAM.Version1_6.Alignment.AOPT: instance GHC.Show.Show Data.SAM.Version1_6.Alignment.AOPT.SAM_V1_6_Alignment_AOPT
+ Data.SAM.Version1_6.Alignment.FOPT: SAM_V1_6_Alignment_FOPT :: ByteString -> Float -> SAM_V1_6_Alignment_FOPT
+ Data.SAM.Version1_6.Alignment.FOPT: [sam_v1_6_alignment_fopt_tag] :: SAM_V1_6_Alignment_FOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.FOPT: [sam_v1_6_alignment_fopt_value] :: SAM_V1_6_Alignment_FOPT -> Float
+ Data.SAM.Version1_6.Alignment.FOPT: data SAM_V1_6_Alignment_FOPT
+ Data.SAM.Version1_6.Alignment.FOPT: instance GHC.Classes.Eq Data.SAM.Version1_6.Alignment.FOPT.SAM_V1_6_Alignment_FOPT
+ Data.SAM.Version1_6.Alignment.FOPT: instance GHC.Generics.Generic Data.SAM.Version1_6.Alignment.FOPT.SAM_V1_6_Alignment_FOPT
+ Data.SAM.Version1_6.Alignment.FOPT: instance GHC.Show.Show Data.SAM.Version1_6.Alignment.FOPT.SAM_V1_6_Alignment_FOPT
+ Data.SAM.Version1_6.Alignment.HOPT: SAM_V1_6_Alignment_HOPT :: ByteString -> ByteString -> SAM_V1_6_Alignment_HOPT
+ Data.SAM.Version1_6.Alignment.HOPT: [sam_v1_6_alignment_hopt_tag] :: SAM_V1_6_Alignment_HOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.HOPT: [sam_v1_6_alignment_hopt_value] :: SAM_V1_6_Alignment_HOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.HOPT: data SAM_V1_6_Alignment_HOPT
+ Data.SAM.Version1_6.Alignment.HOPT: instance GHC.Classes.Eq Data.SAM.Version1_6.Alignment.HOPT.SAM_V1_6_Alignment_HOPT
+ Data.SAM.Version1_6.Alignment.HOPT: instance GHC.Generics.Generic Data.SAM.Version1_6.Alignment.HOPT.SAM_V1_6_Alignment_HOPT
+ Data.SAM.Version1_6.Alignment.HOPT: instance GHC.Show.Show Data.SAM.Version1_6.Alignment.HOPT.SAM_V1_6_Alignment_HOPT
+ Data.SAM.Version1_6.Alignment.IOPT: SAM_V1_6_Alignment_IOPT :: ByteString -> Integer -> SAM_V1_6_Alignment_IOPT
+ Data.SAM.Version1_6.Alignment.IOPT: [sam_v1_6_alignment_iopt_tag] :: SAM_V1_6_Alignment_IOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.IOPT: [sam_v1_6_alignment_iopt_value] :: SAM_V1_6_Alignment_IOPT -> Integer
+ Data.SAM.Version1_6.Alignment.IOPT: data SAM_V1_6_Alignment_IOPT
+ Data.SAM.Version1_6.Alignment.IOPT: instance GHC.Classes.Eq Data.SAM.Version1_6.Alignment.IOPT.SAM_V1_6_Alignment_IOPT
+ Data.SAM.Version1_6.Alignment.IOPT: instance GHC.Generics.Generic Data.SAM.Version1_6.Alignment.IOPT.SAM_V1_6_Alignment_IOPT
+ Data.SAM.Version1_6.Alignment.IOPT: instance GHC.Show.Show Data.SAM.Version1_6.Alignment.IOPT.SAM_V1_6_Alignment_IOPT
+ Data.SAM.Version1_6.Alignment.ZOPT: SAM_V1_6_Alignment_ZOPT :: ByteString -> ByteString -> SAM_V1_6_Alignment_ZOPT
+ Data.SAM.Version1_6.Alignment.ZOPT: [sam_v1_6_alignment_zopt_tag] :: SAM_V1_6_Alignment_ZOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.ZOPT: [sam_v1_6_alignment_zopt_value] :: SAM_V1_6_Alignment_ZOPT -> ByteString
+ Data.SAM.Version1_6.Alignment.ZOPT: data SAM_V1_6_Alignment_ZOPT
+ Data.SAM.Version1_6.Alignment.ZOPT: instance GHC.Classes.Eq Data.SAM.Version1_6.Alignment.ZOPT.SAM_V1_6_Alignment_ZOPT
+ Data.SAM.Version1_6.Alignment.ZOPT: instance GHC.Generics.Generic Data.SAM.Version1_6.Alignment.ZOPT.SAM_V1_6_Alignment_ZOPT
+ Data.SAM.Version1_6.Alignment.ZOPT: instance GHC.Show.Show Data.SAM.Version1_6.Alignment.ZOPT.SAM_V1_6_Alignment_ZOPT
+ Data.SAM.Version1_6.Header.RG: [sam_v1_6_read_group_identifier] :: SAM_V1_6_Read_Group -> SAM_V1_6_Read_Group_Identifier
+ Data.SAM.Version1_6.Header.RG: instance GHC.Generics.Generic Data.SAM.Version1_6.Header.RG.SAM_V1_6_Read_Group
+ Data.SAM.Version1_6.Header.SQ: [sam_v1_6_reference_sequence_dictionary_alternative_locus] :: SAM_V1_6_Reference_Sequence_Dictionary -> Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus
+ Data.SAM.Version1_6.Header.SQ: [sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names] :: SAM_V1_6_Reference_Sequence_Dictionary -> Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names
+ Data.SAM.Version1_6.Write.Base: writeSAM_V1_6 :: FilePath -> SAM_V1_6 -> IO ()
- Data.SAM.Version1_6.Alignment.Base: SAM_V1_6_Alignment :: ByteString -> Int -> ByteString -> Integer -> Int -> ByteString -> ByteString -> Integer -> Integer -> ByteString -> ByteString -> Maybe ByteString -> Maybe Integer -> Maybe Float -> Maybe ByteString -> Maybe (Seq Word8) -> Maybe SAM_V1_6_Alignment_BOPT -> SAM_V1_6_Alignment
+ Data.SAM.Version1_6.Alignment.Base: SAM_V1_6_Alignment :: ByteString -> Int -> ByteString -> Integer -> Int -> ByteString -> ByteString -> Integer -> Integer -> ByteString -> 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 -> SAM_V1_6_Alignment
- Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_aopt] :: SAM_V1_6_Alignment -> Maybe ByteString
+ Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_aopt] :: SAM_V1_6_Alignment -> Maybe SAM_V1_6_Alignment_AOPT
- Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_fopt] :: SAM_V1_6_Alignment -> Maybe Float
+ Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_fopt] :: SAM_V1_6_Alignment -> Maybe SAM_V1_6_Alignment_FOPT
- Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_hopt] :: SAM_V1_6_Alignment -> Maybe (Seq Word8)
+ Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_hopt] :: SAM_V1_6_Alignment -> Maybe SAM_V1_6_Alignment_HOPT
- Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_iopt] :: SAM_V1_6_Alignment -> Maybe Integer
+ Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_iopt] :: SAM_V1_6_Alignment -> Maybe SAM_V1_6_Alignment_IOPT
- Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_zopt] :: SAM_V1_6_Alignment -> Maybe ByteString
+ Data.SAM.Version1_6.Alignment.Base: [sam_v1_6_alignment_zopt] :: SAM_V1_6_Alignment -> Maybe SAM_V1_6_Alignment_ZOPT
- Data.SAM.Version1_6.Read.Parser.Alignment.AOPT: parse_SAM_V1_6_Alignment_AOPT :: Parser ByteString
+ Data.SAM.Version1_6.Read.Parser.Alignment.AOPT: parse_SAM_V1_6_Alignment_AOPT :: Parser SAM_V1_6_Alignment_AOPT
- Data.SAM.Version1_6.Read.Parser.Alignment.FOPT: parse_SAM_V1_6_Alignment_FOPT :: Parser Float
+ Data.SAM.Version1_6.Read.Parser.Alignment.FOPT: parse_SAM_V1_6_Alignment_FOPT :: Parser SAM_V1_6_Alignment_FOPT
- Data.SAM.Version1_6.Read.Parser.Alignment.HOPT: parse_SAM_V1_6_Alignment_HOPT :: Parser (Seq Word8)
+ Data.SAM.Version1_6.Read.Parser.Alignment.HOPT: parse_SAM_V1_6_Alignment_HOPT :: Parser SAM_V1_6_Alignment_HOPT
- Data.SAM.Version1_6.Read.Parser.Alignment.IOPT: parse_SAM_V1_6_Alignment_IOPT :: Parser Integer
+ Data.SAM.Version1_6.Read.Parser.Alignment.IOPT: parse_SAM_V1_6_Alignment_IOPT :: Parser SAM_V1_6_Alignment_IOPT
- Data.SAM.Version1_6.Read.Parser.Alignment.ZOPT: parse_SAM_V1_6_Alignment_ZOPT :: Parser ByteString
+ Data.SAM.Version1_6.Read.Parser.Alignment.ZOPT: parse_SAM_V1_6_Alignment_ZOPT :: Parser SAM_V1_6_Alignment_ZOPT
Files
- CHANGELOG.md +6/−0
- hs-samtools.cabal +8/−2
- src/Data/SAM/Version1_6/Alignment.hs +0/−8
- src/Data/SAM/Version1_6/Alignment/AOPT.hs +68/−0
- src/Data/SAM/Version1_6/Alignment/BOPT.hs +49/−54
- src/Data/SAM/Version1_6/Alignment/Base.hs +45/−47
- src/Data/SAM/Version1_6/Alignment/FOPT.hs +68/−0
- src/Data/SAM/Version1_6/Alignment/HOPT.hs +68/−0
- src/Data/SAM/Version1_6/Alignment/IOPT.hs +68/−0
- src/Data/SAM/Version1_6/Alignment/ZOPT.hs +68/−0
- src/Data/SAM/Version1_6/Base.hs +13/−18
- src/Data/SAM/Version1_6/Header.hs +0/−8
- src/Data/SAM/Version1_6/Header/CO.hs +3/−8
- src/Data/SAM/Version1_6/Header/HD.hs +21/−26
- src/Data/SAM/Version1_6/Header/PG.hs +31/−36
- src/Data/SAM/Version1_6/Header/RG.hs +73/−77
- src/Data/SAM/Version1_6/Header/SQ.hs +53/−58
- src/Data/SAM/Version1_6/Read/Base.hs +1/−1
- src/Data/SAM/Version1_6/Read/Error.hs +0/−6
- src/Data/SAM/Version1_6/Read/Parser/Alignment/AOPT.hs +11/−9
- src/Data/SAM/Version1_6/Read/Parser/Alignment/FOPT.hs +11/−8
- src/Data/SAM/Version1_6/Read/Parser/Alignment/HOPT.hs +12/−12
- src/Data/SAM/Version1_6/Read/Parser/Alignment/IOPT.hs +11/−8
- src/Data/SAM/Version1_6/Read/Parser/Alignment/ZOPT.hs +11/−9
- src/Data/SAM/Version1_6/Write/Base.hs +551/−0
- test/Main.hs +16/−37
CHANGELOG.md view
@@ -82,3 +82,9 @@ * Fixed broken parsing of SAM_V1_6(..). * Strengthened parsing of SAM_V1_6(..) by accurately emulating the sam v1.6 specification through use of permutable parsers. * Added initial test suite.++## 0.8.0.0 -- 2023-10-30++* Adding functionality to write SAM_V1_6(..) to file.+* Made show instances of many newtypes/datatypes more verbose to match fields of said newtypes/datatypes.+* Added initial writeSAM_V1_6 test case.
hs-samtools.cabal view
@@ -20,7 +20,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 0.7.0.0+version: 0.8.0.0 -- A short (one-line) description of the package. synopsis: Read and write SAM, BAM, and CRAM files.@@ -68,6 +68,11 @@ exposed-modules: Data.SAM.Version1_6.Base, Data.SAM.Version1_6.Alignment, Data.SAM.Version1_6.Alignment.Base,+ Data.SAM.Version1_6.Alignment.AOPT,+ Data.SAM.Version1_6.Alignment.FOPT,+ Data.SAM.Version1_6.Alignment.HOPT,+ Data.SAM.Version1_6.Alignment.IOPT,+ Data.SAM.Version1_6.Alignment.ZOPT, Data.SAM.Version1_6.Alignment.BOPT, Data.SAM.Version1_6.Header, Data.SAM.Version1_6.Header.CO,@@ -122,7 +127,8 @@ Data.SAM.Version1_6.Read.Parser.Header.PG.PP, Data.SAM.Version1_6.Read.Parser.Header.PG.DS, Data.SAM.Version1_6.Read.Parser.Header.PG.VN,- Data.SAM.Version1_6.Read.Parser.Header.CO.Base+ Data.SAM.Version1_6.Read.Parser.Header.CO.Base,+ Data.SAM.Version1_6.Write.Base -- Modules included in this library but not exported. -- other-modules:
src/Data/SAM/Version1_6/Alignment.hs view
@@ -1,15 +1,7 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Alignment
+ src/Data/SAM/Version1_6/Alignment/AOPT.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Alignment.AOPT+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = WARNING+--+-- This module is considered __internal__.+--+-- The Package Versioning Policy __does not apply__.+--+-- The contents of this module may change __in any way whatsoever__+-- and __without any warning__ between minor versions of this package.+--+-- Authors importing this library are expected to track development+-- closely.+--+-- All credit goes to the author(s)/maintainer(s) of the+-- [containers](https://hackage.haskell.org/package/containers) library+-- for the above warning text.+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Alignment.AOPT ( -- * SAM version 1.6 alignment optional fields data type+ SAM_V1_6_Alignment_AOPT(..)+ ) where++import Data.ByteString (ByteString)+import Data.Data+import Generics.Deriving.Base+++-- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment_AOPT"@ data type.+--+-- See section 1.5 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+data SAM_V1_6_Alignment_AOPT = SAM_V1_6_Alignment_AOPT { sam_v1_6_alignment_aopt_tag :: ByteString + , sam_v1_6_alignment_aopt_value :: ByteString+ }+ deriving (Generic,Typeable)++instance Eq SAM_V1_6_Alignment_AOPT where+ SAM_V1_6_Alignment_AOPT sam_v1_6_alignment_aopt_tag1+ sam_v1_6_alignment_aopt_value1 == SAM_V1_6_Alignment_AOPT sam_v1_6_alignment_aopt_tag2+ sam_v1_6_alignment_aopt_value2 = sam_v1_6_alignment_aopt_tag1 == sam_v1_6_alignment_aopt_tag2 &&+ sam_v1_6_alignment_aopt_value1 == sam_v1_6_alignment_aopt_value2++instance Show SAM_V1_6_Alignment_AOPT where+ show (SAM_V1_6_Alignment_AOPT tag+ value+ ) =+ "SAM_V1_6_Alignment_AOPT { " +++ "sam_v1_6_alignment_aopt_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_aopt_value = " +++ (show value) +++ " }"
src/Data/SAM/Version1_6/Alignment/BOPT.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Alignment.BOPT@@ -133,13 +128,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Int8 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Int8 { " +++ "sam_v1_6_alignment_bopt_int8_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_int8_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_int8_value = " +++ (show value) ++ " }" -- | c__C__sSiIf of the last optional field (type B).@@ -159,13 +154,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Word8 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Word8 { " +++ "sam_v1_6_alignment_bopt_word8_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_word8_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_word8_value = " +++ (show value) ++ " }" -- | cC__s__SiIf of the last optional field (type B).@@ -185,13 +180,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Int16 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Int16 { " +++ "sam_v1_6_alignment_bopt_int16_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_int16_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_int16_value = " +++ (show value) ++ " }" -- | cCs__S__iIf of the last optional field (type B).@@ -211,13 +206,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Word16 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Word16 { " +++ "sam_v1_6_alignment_bopt_word16_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_word16_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_word16_value = " +++ (show value) ++ " }" -- | cCsS__i__If of the last optional field (type B).@@ -237,13 +232,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Int32 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Int32 { " +++ "sam_v1_6_alignment_bopt_int32_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_int32_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_int32_value = " +++ (show value) ++ " }" -- | cCsSi__I__f of the last optional field (type B).@@ -263,13 +258,13 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Word32 { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Word32 { " +++ "sam_v1_6_alignment_bopt_word32_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_word32_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_word32_value = " +++ (show value) ++ " }" -- | cCsSiI__f__ of the last optional field (type B).@@ -289,11 +284,11 @@ bopttype value ) =- "SAM_V1_6_Alignment_BOPT_Float { " ++- "tag = " ++- (show tag) ++- " , type = " ++- (show bopttype) ++- " , value = " ++- (show value) +++ "SAM_V1_6_Alignment_BOPT_Float { " +++ "sam_v1_6_alignment_bopt_float_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_bopt_float_type = " +++ (show bopttype) +++ " , sam_v1_6_alignment_bopt_float_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Alignment/Base.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} {-# OPTIONS_GHC -fno-warn-name-shadowing #-} -- |@@ -27,12 +22,15 @@ SAM_V1_6_Alignment(..) ) where +import Data.SAM.Version1_6.Alignment.AOPT+import Data.SAM.Version1_6.Alignment.IOPT+import Data.SAM.Version1_6.Alignment.FOPT+import Data.SAM.Version1_6.Alignment.ZOPT+import Data.SAM.Version1_6.Alignment.HOPT import Data.SAM.Version1_6.Alignment.BOPT import Data.ByteString import Data.Data-import Data.Sequence-import Data.Word import Generics.Deriving.Base -- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment"@ data type.@@ -102,11 +100,11 @@ -- This field can be a ‘*’ when quality is not stored. -- If not a ‘*’, SEQ must not be a ‘*’ and the length of the quality -- string ought to equal the length of SEQ.- , sam_v1_6_alignment_aopt :: Maybe ByteString -- ^ A - [!-~] - Printable characters.- , sam_v1_6_alignment_iopt :: Maybe Integer -- ^ i - [-+]?[0-9]+ - Signed integer.- , sam_v1_6_alignment_fopt :: Maybe Float -- ^ f - [-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? - Single-precision floating number.- , sam_v1_6_alignment_zopt :: Maybe ByteString -- ^ Z - [ !-~]* - Printable string, including space.- , sam_v1_6_alignment_hopt :: Maybe (Seq Word8) -- ^ H - ([0-9A-F][0-9A-F])* - Byte array in the Hex format.+ , sam_v1_6_alignment_aopt :: Maybe SAM_V1_6_Alignment_AOPT -- ^ A - [!-~] - Printable characters.+ , sam_v1_6_alignment_iopt :: Maybe SAM_V1_6_Alignment_IOPT -- ^ i - [-+]?[0-9]+ - Signed integer.+ , sam_v1_6_alignment_fopt :: Maybe SAM_V1_6_Alignment_FOPT -- ^ f - [-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)? - Single-precision floating number.+ , sam_v1_6_alignment_zopt :: Maybe SAM_V1_6_Alignment_ZOPT -- ^ Z - [ !-~]* - Printable string, including space.+ , sam_v1_6_alignment_hopt :: Maybe SAM_V1_6_Alignment_HOPT -- ^ H - ([0-9A-F][0-9A-F])* - Byte array in the Hex format. , sam_v1_6_alignment_bopt :: Maybe SAM_V1_6_Alignment_BOPT -- ^ B - [cCsSiIf]​(,[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)* - Integer or numeric array. } deriving (Generic,Typeable)@@ -164,39 +162,39 @@ instance Show SAM_V1_6_Alignment where show (SAM_V1_6_Alignment qname flag rname pos mapq cigar rnext pnext tlen seq qual aopt iopt fopt zopt hopt bopt) =- "SAM_V1_6_Alignment { " ++- "qname = " ++- (show qname) ++- " , flag = " ++- (show flag) ++- " , rname = " ++- (show rname) ++- " , pos = " ++- (show pos) ++- " , mapq = " ++- (show mapq) ++- " , cigar = " ++- (show cigar) ++- " , rnext = " ++- (show rnext) ++- " , pnext = " ++- (show pnext) ++- " , tlen = " ++- (show tlen) ++- " , seq = " ++- (show seq) ++- " , qual = " ++- (show qual) ++- " , aopt = " ++- ( show aopt) ++- " , iopt = " ++- (show iopt) ++- " , fopt = " ++- (show fopt) ++- " , zopt = " ++- (show zopt) ++- " , hopt = " ++- (show hopt) ++- " , bopt = " ++- (show bopt) +++ "SAM_V1_6_Alignment { " +++ "sam_v1_6_alignment_qname = " +++ (show qname) +++ " , sam_v1_6_alignment_flag = " +++ (show flag) +++ " , sam_v1_6_alignment_rname = " +++ (show rname) +++ " , sam_v1_6_alignment_pos = " +++ (show pos) +++ " , sam_v1_6_alignment_mapq = " +++ (show mapq) +++ " , sam_v1_6_alignment_cigar = " +++ (show cigar) +++ " , sam_v1_6_alignment_rnext = " +++ (show rnext) +++ " , sam_v1_6_alignment_pnext = " +++ (show pnext) +++ " , sam_v1_6_alignment_tlen = " +++ (show tlen) +++ " , sam_v1_6_alignment_seq = " +++ (show seq) +++ " , sam_v1_6_alignment_qual = " +++ (show qual) +++ " , sam_v1_6_alignment_aopt = " +++ ( show aopt) +++ " , sam_v1_6_alignment_iopt = " +++ (show iopt) +++ " , sam_v1_6_alignment_fopt = " +++ (show fopt) +++ " , sam_v1_6_alignment_zopt = " +++ (show zopt) +++ " , sam_v1_6_alignment_hopt = " +++ (show hopt) +++ " , sam_v1_6_alignment_bopt = " +++ (show bopt) ++ " }"
+ src/Data/SAM/Version1_6/Alignment/FOPT.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Alignment.FOPT+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = WARNING+--+-- This module is considered __internal__.+--+-- The Package Versioning Policy __does not apply__.+--+-- The contents of this module may change __in any way whatsoever__+-- and __without any warning__ between minor versions of this package.+--+-- Authors importing this library are expected to track development+-- closely.+--+-- All credit goes to the author(s)/maintainer(s) of the+-- [containers](https://hackage.haskell.org/package/containers) library+-- for the above warning text.+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Alignment.FOPT ( -- * SAM version 1.6 alignment optional fields data type+ SAM_V1_6_Alignment_FOPT(..)+ ) where++import Data.ByteString (ByteString)+import Data.Data+import Generics.Deriving.Base+++-- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment_FOPT"@ data type.+--+-- See section 1.5 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+data SAM_V1_6_Alignment_FOPT = SAM_V1_6_Alignment_FOPT { sam_v1_6_alignment_fopt_tag :: ByteString + , sam_v1_6_alignment_fopt_value :: Float+ }+ deriving (Generic,Typeable)++instance Eq SAM_V1_6_Alignment_FOPT where+ SAM_V1_6_Alignment_FOPT sam_v1_6_alignment_fopt_tag1+ sam_v1_6_alignment_fopt_value1 == SAM_V1_6_Alignment_FOPT sam_v1_6_alignment_fopt_tag2+ sam_v1_6_alignment_fopt_value2 = sam_v1_6_alignment_fopt_tag1 == sam_v1_6_alignment_fopt_tag2 &&+ sam_v1_6_alignment_fopt_value1 == sam_v1_6_alignment_fopt_value2++instance Show SAM_V1_6_Alignment_FOPT where+ show (SAM_V1_6_Alignment_FOPT tag+ value+ ) =+ "SAM_V1_6_Alignment_FOPT { " +++ "sam_v1_6_alignment_fopt_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_fopt_value = " +++ (show value) +++ " }"
+ src/Data/SAM/Version1_6/Alignment/HOPT.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Alignment.HOPT+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = WARNING+--+-- This module is considered __internal__.+--+-- The Package Versioning Policy __does not apply__.+--+-- The contents of this module may change __in any way whatsoever__+-- and __without any warning__ between minor versions of this package.+--+-- Authors importing this library are expected to track development+-- closely.+--+-- All credit goes to the author(s)/maintainer(s) of the+-- [containers](https://hackage.haskell.org/package/containers) library+-- for the above warning text.+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Alignment.HOPT ( -- * SAM version 1.6 alignment optional fields data type+ SAM_V1_6_Alignment_HOPT(..)+ ) where++import Data.ByteString (ByteString)+import Data.Data+import Generics.Deriving.Base+++-- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment_HOPT"@ data type.+--+-- See section 1.5 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+data SAM_V1_6_Alignment_HOPT = SAM_V1_6_Alignment_HOPT { sam_v1_6_alignment_hopt_tag :: ByteString + , sam_v1_6_alignment_hopt_value :: ByteString+ }+ deriving (Generic,Typeable)++instance Eq SAM_V1_6_Alignment_HOPT where+ SAM_V1_6_Alignment_HOPT sam_v1_6_alignment_hopt_tag1+ sam_v1_6_alignment_hopt_value1 == SAM_V1_6_Alignment_HOPT sam_v1_6_alignment_hopt_tag2+ sam_v1_6_alignment_hopt_value2 = sam_v1_6_alignment_hopt_tag1 == sam_v1_6_alignment_hopt_tag2 &&+ sam_v1_6_alignment_hopt_value1 == sam_v1_6_alignment_hopt_value2++instance Show SAM_V1_6_Alignment_HOPT where+ show (SAM_V1_6_Alignment_HOPT tag+ value+ ) =+ "SAM_V1_6_Alignment_HOPT { " +++ "sam_v1_6_alignment_hopt_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_hopt_value = " +++ (show value) +++ " }"
+ src/Data/SAM/Version1_6/Alignment/IOPT.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Alignment.IOPT+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = WARNING+--+-- This module is considered __internal__.+--+-- The Package Versioning Policy __does not apply__.+--+-- The contents of this module may change __in any way whatsoever__+-- and __without any warning__ between minor versions of this package.+--+-- Authors importing this library are expected to track development+-- closely.+--+-- All credit goes to the author(s)/maintainer(s) of the+-- [containers](https://hackage.haskell.org/package/containers) library+-- for the above warning text.+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Alignment.IOPT ( -- * SAM version 1.6 alignment optional fields data type+ SAM_V1_6_Alignment_IOPT(..)+ ) where++import Data.ByteString (ByteString)+import Data.Data+import Generics.Deriving.Base+++-- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment_IOPT"@ data type.+--+-- See section 1.5 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+data SAM_V1_6_Alignment_IOPT = SAM_V1_6_Alignment_IOPT { sam_v1_6_alignment_iopt_tag :: ByteString + , sam_v1_6_alignment_iopt_value :: Integer+ }+ deriving (Generic,Typeable)++instance Eq SAM_V1_6_Alignment_IOPT where+ SAM_V1_6_Alignment_IOPT sam_v1_6_alignment_iopt_tag1+ sam_v1_6_alignment_iopt_value1 == SAM_V1_6_Alignment_IOPT sam_v1_6_alignment_iopt_tag2+ sam_v1_6_alignment_iopt_value2 = sam_v1_6_alignment_iopt_tag1 == sam_v1_6_alignment_iopt_tag2 &&+ sam_v1_6_alignment_iopt_value1 == sam_v1_6_alignment_iopt_value2++instance Show SAM_V1_6_Alignment_IOPT where+ show (SAM_V1_6_Alignment_IOPT tag+ value+ ) =+ "SAM_V1_6_Alignment_IOPT { " +++ "sam_v1_6_alignment_iopt_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_iopt_value = " +++ (show value) +++ " }"
+ src/Data/SAM/Version1_6/Alignment/ZOPT.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Alignment.ZOPT+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = WARNING+--+-- This module is considered __internal__.+--+-- The Package Versioning Policy __does not apply__.+--+-- The contents of this module may change __in any way whatsoever__+-- and __without any warning__ between minor versions of this package.+--+-- Authors importing this library are expected to track development+-- closely.+--+-- All credit goes to the author(s)/maintainer(s) of the+-- [containers](https://hackage.haskell.org/package/containers) library+-- for the above warning text.+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Alignment.ZOPT ( -- * SAM version 1.6 alignment optional fields data type+ SAM_V1_6_Alignment_ZOPT(..)+ ) where++import Data.ByteString (ByteString)+import Data.Data+import Generics.Deriving.Base+++-- | Custom SAM (version 1.6) @"SAM_V1_6_Alignment_ZOPT"@ data type.+--+-- See section 1.5 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+data SAM_V1_6_Alignment_ZOPT = SAM_V1_6_Alignment_ZOPT { sam_v1_6_alignment_zopt_tag :: ByteString + , sam_v1_6_alignment_zopt_value :: ByteString+ }+ deriving (Generic,Typeable)++instance Eq SAM_V1_6_Alignment_ZOPT where+ SAM_V1_6_Alignment_ZOPT sam_v1_6_alignment_zopt_tag1+ sam_v1_6_alignment_zopt_value1 == SAM_V1_6_Alignment_ZOPT sam_v1_6_alignment_zopt_tag2+ sam_v1_6_alignment_zopt_value2 = sam_v1_6_alignment_zopt_tag1 == sam_v1_6_alignment_zopt_tag2 &&+ sam_v1_6_alignment_zopt_value1 == sam_v1_6_alignment_zopt_value2++instance Show SAM_V1_6_Alignment_ZOPT where+ show (SAM_V1_6_Alignment_ZOPT tag+ value+ ) =+ "SAM_V1_6_Alignment_ZOPT { " +++ "sam_v1_6_alignment_zopt_tag = " +++ (show tag) +++ " , sam_v1_6_alignment_zopt_value = " +++ (show value) +++ " }"
src/Data/SAM/Version1_6/Base.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Base@@ -82,17 +77,17 @@ one_line_comment alignment ) =- "SAM_V1_6 { " ++- "file_level_metadata = " ++- (show file_level_metadata) ++- " , reference_sequence_dictionary = " ++- (show reference_sequence_dictionary) ++- " , read_group = " ++- (show read_group) ++- " , program = " ++- (show program) ++- " , one_line_comment = " ++- (show one_line_comment) ++- " , alignment = " ++- (show alignment) +++ "SAM_V1_6 { " +++ "sam_v1_6_file_level_metadata = " +++ (show file_level_metadata) +++ " , sam_v1_6_reference_sequence_dictionary = " +++ (show reference_sequence_dictionary) +++ " , sam_v1_6_read_group = " +++ (show read_group) +++ " , sam_v1_6_program = " +++ (show program) +++ " , sam_v1_6_one_line_comment = " +++ (show one_line_comment) +++ " , sam_v1_6_alignment = " +++ (show alignment) ++ " }"
src/Data/SAM/Version1_6/Header.hs view
@@ -1,15 +1,7 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header
src/Data/SAM/Version1_6/Header/CO.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header.CO@@ -41,7 +36,7 @@ SAM_V1_6_One_Line_Comment sam_v1_6_one_line_comment_value1 == SAM_V1_6_One_Line_Comment sam_v1_6_one_line_comment_value2 = sam_v1_6_one_line_comment_value1 == sam_v1_6_one_line_comment_value2 instance Show SAM_V1_6_One_Line_Comment where- show (SAM_V1_6_One_Line_Comment value) = "SAM_V1_6_One_Line_Comment { " ++- "value = " ++- (show value) +++ show (SAM_V1_6_One_Line_Comment value) = "SAM_V1_6_One_Line_Comment { " +++ "sam_v1_6_one_line_comment_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Header/HD.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header.HD@@ -59,15 +54,15 @@ instance Show SAM_V1_6_File_Level_Metadata where show (SAM_V1_6_File_Level_Metadata version sorting_order alignment_grouping subsorting_order) =- "SAM_V1_6_File_Level_Metadata { " ++- "version = " ++- (show version) ++- " , sorting_order = " ++- (show sorting_order) ++- " , alignment_grouping = " ++- (show alignment_grouping) ++- " , subsorting_order = " ++- (show subsorting_order) +++ "SAM_V1_6_File_Level_Metadata { " +++ "sam_v1_6_file_level_metadata_format_version = " +++ (show version) +++ " , sam_v1_6_file_level_metadata_sorting_order = " +++ (show sorting_order) +++ " , sam_v1_6_file_level_metadata_alignment_grouping = " +++ (show alignment_grouping) +++ " , sam_v1_6_file_level_metadata_subsorting_order = " +++ (show subsorting_order) ++ " }" -- | VN tag for @"SAM_V1_6_File_Level_Metadata"@.@@ -80,9 +75,9 @@ instance Show SAM_V1_6_File_Level_Metadata_Format_Version where show (SAM_V1_6_File_Level_Metadata_Format_Version value) =- "SAM_V1_6_File_Level_Metadata_Format_Version { " ++- "value = " ++- (show value) +++ "SAM_V1_6_File_Level_Metadata_Format_Version { " +++ "sam_v1_6_file_level_metadata_format_version_value = " +++ (show value) ++ " }" -- | SO tag for @"SAM_V1_6_File_Level_Metadata"@.@@ -95,9 +90,9 @@ instance Show SAM_V1_6_File_Level_Metadata_Sorting_Order where show (SAM_V1_6_File_Level_Metadata_Sorting_Order value) =- "SAM_V1_6_File_Level_Metadata_Sorting_Order { " ++- "value = " ++- (show value) +++ "SAM_V1_6_File_Level_Metadata_Sorting_Order { " +++ "sam_v1_6_file_level_metadata_sorting_order_value = " +++ (show value) ++ " }" -- | GO tag for @"SAM_V1_6_File_Level_Metadata"@.@@ -110,9 +105,9 @@ instance Show SAM_V1_6_File_Level_Metadata_Alignment_Grouping where show (SAM_V1_6_File_Level_Metadata_Alignment_Grouping value) =- "SAM_V1_6_File_Level_Metadata_Alignment_Grouping { " ++- "value = " ++- (show value) +++ "SAM_V1_6_File_Level_Metadata_Alignment_Grouping { " +++ "sam_v1_6_file_level_metadata_alignment_grouping_value = " +++ (show value) ++ " }" -- | SS tag for @"SAM_V1_6_File_Level_Metadata"@.@@ -125,7 +120,7 @@ instance Show SAM_V1_6_File_Level_Metadata_SubSorting_Order where show (SAM_V1_6_File_Level_Metadata_SubSorting_Order value) =- "SAM_V1_6_File_Level_Metadata_SubSorting_Order { " ++- "value = " ++- (show value) +++ "SAM_V1_6_File_Level_Metadata_SubSorting_Order { " +++ "sam_v1_6_file_level_metadata_subsorting_order_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Header/PG.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header.PG@@ -69,19 +64,19 @@ instance Show SAM_V1_6_Program where show (SAM_V1_6_Program record_identifier name command_line previous_pg_id description version) =- "SAM_V1_6_Program { " ++- "record_identifier = " ++- (show record_identifier) ++- " , name = " ++- (show name) ++- " , command_line = " ++- (show command_line) ++- " , previous_pg_id = " ++- (show previous_pg_id) ++- " , description = " ++- (show description) ++- " , version = " ++- (show version) +++ "SAM_V1_6_Program { " +++ "rsam_v1_6_program_record_identifier = " +++ (show record_identifier) +++ " , sam_v1_6_program_name = " +++ (show name) +++ " , sam_v1_6_program_command_line = " +++ (show command_line) +++ " , sam_v1_6_program_previous_pg_id = " +++ (show previous_pg_id) +++ " , sam_v1_6_program_description = " +++ (show description) +++ " , sam_v1_6_program_version = " +++ (show version) ++ " }" -- | ID tag for @"SAM_V1_6_Program"@.@@ -94,9 +89,9 @@ instance Show SAM_V1_6_Program_Record_Identifier where show (SAM_V1_6_Program_Record_Identifier value) =- "SAM_V1_6_Program_Record_Identifier { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Record_Identifier { " +++ "sam_v1_6_program_record_identifier_value = " +++ (show value) ++ " }" -- | PN tag for @"SAM_V1_6_Program"@.@@ -109,9 +104,9 @@ instance Show SAM_V1_6_Program_Name where show (SAM_V1_6_Program_Name value) =- "SAM_V1_6_Program_Name { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Name { " +++ "sam_v1_6_program_name_value = " +++ (show value) ++ " }" -- | CL tag for @"SAM_V1_6_Program"@.@@ -124,9 +119,9 @@ instance Show SAM_V1_6_Program_Command_Line where show (SAM_V1_6_Program_Command_Line value) =- "SAM_V1_6_Program_Command_Line { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Command_Line { " +++ "sam_v1_6_program_command_line_value = " +++ (show value) ++ " }" -- | PP tag for @"SAM_V1_6_Program"@.@@ -139,9 +134,9 @@ instance Show SAM_V1_6_Program_Previous_PG_ID where show (SAM_V1_6_Program_Previous_PG_ID value) =- "SAM_V1_6_Program_Previous_PG_ID { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Previous_PG_ID { " +++ "sam_v1_6_program_previous_pg_id_value = " +++ (show value) ++ " }" -- | DS tag for @"SAM_V1_6_Program"@.@@ -154,9 +149,9 @@ instance Show SAM_V1_6_Program_Description where show (SAM_V1_6_Program_Description value) =- "SAM_V1_6_Program_Description { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Description { " +++ "sam_v1_6_program_description_value = " +++ (show value) ++ " }" -- | VN tag for @"SAM_V1_6_Program"@.@@ -169,7 +164,7 @@ instance Show SAM_V1_6_Program_Version where show (SAM_V1_6_Program_Version value) =- "SAM_V1_6_Program_Version { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Program_Version { " +++ "sam_v1_6_program_version_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Header/RG.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header.RG@@ -48,7 +43,7 @@ -- | Custom SAM (version 1.6) @"SAM_V1_6_Read_Group"@ data type. -- -- See section 1.3 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-data SAM_V1_6_Read_Group = SAM_V1_6_Read_Group { sam_v1_6_read_group_identifer :: SAM_V1_6_Read_Group_Identifier+data SAM_V1_6_Read_Group = SAM_V1_6_Read_Group { sam_v1_6_read_group_identifier :: SAM_V1_6_Read_Group_Identifier , sam_v1_6_read_group_barcode_sequence :: Maybe SAM_V1_6_Read_Group_Barcode_Sequence , sam_v1_6_read_group_sequencing_center :: Maybe SAM_V1_6_Read_Group_Sequencing_Center , sam_v1_6_read_group_description :: Maybe SAM_V1_6_Read_Group_Description@@ -63,6 +58,7 @@ , sam_v1_6_read_group_platform_unit :: Maybe SAM_V1_6_Read_Group_Platform_Unit , sam_v1_6_read_group_sample :: Maybe SAM_V1_6_Read_Group_Sample }+ deriving (Generic,Typeable) instance Eq SAM_V1_6_Read_Group where SAM_V1_6_Read_Group sam_v1_6_read_group_identifier1@@ -122,35 +118,35 @@ platform_unit sample ) =- "SAM_V1_6_Read_Group { " ++- "read_group_identifier = " ++- (show group_identifier) ++- " , barcode_sequence = " ++- (show barcode_sequence) ++- " , sequencing_center = " ++- (show sequencing_center) ++- " , description = " ++- (show description) ++- " , run_date = " ++- (show run_date) ++- " , flow_order = " ++- (show flow_order) ++- " , key_sequence = " ++- (show key_sequence) ++- " , library = " ++- (show library) ++- " , programs = " ++- (show programs) ++- " , show_predicted_median_insert_size = " ++- (show predicted_median_insert_size) ++- " , platform = " ++- (show platform) ++- " , platform_model = " ++- (show platform_model) ++- " , platform_unit = " ++- (show platform_unit) ++- " , sample = " ++- (show sample) +++ "SAM_V1_6_Read_Group { " +++ "sam_v1_6_read_group_identifier = " +++ (show group_identifier) +++ " , sam_v1_6_read_group_barcode_sequence = " +++ (show barcode_sequence) +++ " , sam_v1_6_read_group_sequencing_center = " +++ (show sequencing_center) +++ " , sam_v1_6_read_group_description = " +++ (show description) +++ " , sam_v1_6_read_group_run_date = " +++ (show run_date) +++ " , sam_v1_6_read_group_flow_order = " +++ (show flow_order) +++ " , sam_v1_6_read_group_key_sequence = " +++ (show key_sequence) +++ " , sam_v1_6_read_group_library = " +++ (show library) +++ " , sam_v1_6_read_group_programs = " +++ (show programs) +++ " , sam_v1_6_read_group_show_predicted_median_insert_size = " +++ (show predicted_median_insert_size) +++ " , sam_v1_6_read_group_platform = " +++ (show platform) +++ " , sam_v1_6_read_group_platform_model = " +++ (show platform_model) +++ " , sam_v1_6_read_group_platform_unit = " +++ (show platform_unit) +++ " , sam_v1_6_read_group_sample = " +++ (show sample) ++ " }" -- | ID tag for @"SAM_V1_6_Read_Group"@.@@ -163,9 +159,9 @@ instance Show SAM_V1_6_Read_Group_Identifier where show (SAM_V1_6_Read_Group_Identifier value) =- "SAM_V1_6_Read_Group_Identifier { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Identifier { " +++ "sam_v1_6_read_group_identifier_value = " +++ (show value) ++ " }" -- | BC tag for @"SAM_V1_6_Read_Group"@.@@ -178,9 +174,9 @@ instance Show SAM_V1_6_Read_Group_Barcode_Sequence where show (SAM_V1_6_Read_Group_Barcode_Sequence value) =- "SAM_V1_6_Read_Group_Barcode_Sequence { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Barcode_Sequence { " +++ "sam_v1_6_read_group_barcode_sequence_value = " +++ (show value) ++ " }" -- | CN tag for @"SAM_V1_6_Read_Group"@.@@ -193,9 +189,9 @@ instance Show SAM_V1_6_Read_Group_Sequencing_Center where show (SAM_V1_6_Read_Group_Sequencing_Center value) =- "SAM_V1_6_Read_Group_Sequencing_Center { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Sequencing_Center { " +++ "sam_v1_6_read_group_sequencing_center_value = " +++ (show value) ++ " }" -- | DS tag for @"SAM_V1_6_Read_Group"@.@@ -208,9 +204,9 @@ instance Show SAM_V1_6_Read_Group_Description where show (SAM_V1_6_Read_Group_Description value) =- "SAM_V1_6_Read_Group_Description { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Description { " +++ "sam_v1_6_read_group_description_value = " +++ (show value) ++ " }" -- | DT tag for @"SAM_V1_6_Read_Group"@.@@ -223,9 +219,9 @@ instance Show SAM_V1_6_Read_Group_Run_Date where show (SAM_V1_6_Read_Group_Run_Date value) =- "SAM_V1_6_Read_Group_Run_Date { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Run_Date { " +++ "sam_v1_6_read_group_run_date_value = " +++ (show value) ++ " }" -- | FO tag for @"SAM_V1_6_Read_Group"@.@@ -238,9 +234,9 @@ instance Show SAM_V1_6_Read_Group_Flow_Order where show (SAM_V1_6_Read_Group_Flow_Order value) =- "SAM_V1_6_Read_Group_Flow_Order { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Flow_Order { " +++ "sam_v1_6_read_group_flow_order_value = " +++ (show value) ++ " }" -- | KS tag for @"SAM_V1_6_Read_Group"@.@@ -253,9 +249,9 @@ instance Show SAM_V1_6_Read_Group_Key_Sequence where show (SAM_V1_6_Read_Group_Key_Sequence value) =- "SAM_V1_6_Read_Group_Key_Sequence { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Key_Sequence { " +++ "sam_v1_6_read_group_key_sequence_value = " +++ (show value) ++ " }" -- | LB tag for @"SAM_V1_6_Read_Group"@.@@ -268,9 +264,9 @@ instance Show SAM_V1_6_Read_Group_Library where show (SAM_V1_6_Read_Group_Library value) =- "SAM_V1_6_Read_Group_Library { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Library { " +++ "sam_v1_6_read_group_library_value = " +++ (show value) ++ " }" -- | PG tag for @"SAM_V1_6_Read_Group"@.@@ -283,9 +279,9 @@ instance Show SAM_V1_6_Read_Group_Programs where show (SAM_V1_6_Read_Group_Programs value) =- "SAM_V1_6_Read_Group_Programs { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Programs { " +++ "sam_v1_6_read_group_programs_value = " +++ (show value) ++ " }" -- | PI tag for @"SAM_V1_6_Read_Group"@.@@ -298,9 +294,9 @@ instance Show SAM_V1_6_Read_Group_Predicted_Median_Insert_Size where show (SAM_V1_6_Read_Group_Predicted_Median_Insert_Size value) =- "SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Predicted_Median_Insert_Size { " +++ "sam_v1_6_read_group_predicted_median_insert_size_value = " +++ (show value) ++ " }" -- | PL tag for @"SAM_V1_6_Read_Group"@.@@ -313,9 +309,9 @@ instance Show SAM_V1_6_Read_Group_Platform where show (SAM_V1_6_Read_Group_Platform value) =- "SAM_V1_6_Read_Group_Platform { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Platform { " +++ "sam_v1_6_read_group_platform_value = " +++ (show value) ++ " }" -- | PM tag for @"SAM_V1_6_Read_Group"@.@@ -328,9 +324,9 @@ instance Show SAM_V1_6_Read_Group_Platform_Model where show (SAM_V1_6_Read_Group_Platform_Model value) =- "SAM_V1_6_Read_Group_Platform_Model { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Platform_Model { " +++ "sam_v1_6_read_group_platform_model_value = " +++ (show value) ++ " }" -- | PU tag for @"SAM_V1_6_Read_Group"@.@@ -343,9 +339,9 @@ instance Show SAM_V1_6_Read_Group_Platform_Unit where show (SAM_V1_6_Read_Group_Platform_Unit value) =- "SAM_V1_6_Read_Group_Platform_Unit { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Platform_Unit { " +++ "sam_v1_6_read_group_platform_unit_value = " +++ (show value) ++ " }" -- | SM tag for @"SAM_V1_6_Read_Group"@.@@ -358,7 +354,7 @@ instance Show SAM_V1_6_Read_Group_Sample where show (SAM_V1_6_Read_Group_Sample value) =- "SAM_V1_6_Read_Group_Sample { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Read_Group_Sample { " +++ "sam_v1_6_read_group_sample_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Header/SQ.hs view
@@ -3,13 +3,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Header.SQ@@ -46,8 +41,8 @@ -- See section 1.3 of the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation. data SAM_V1_6_Reference_Sequence_Dictionary = SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name :: SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name , sam_v1_6_reference_sequence_dictionary_reference_sequence_length :: SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length- , sam_v1_6_reference_sequence_dictionary_reference_alternative_locus :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus- , sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names+ , sam_v1_6_reference_sequence_dictionary_alternative_locus :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus+ , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier , sam_v1_6_reference_sequence_dictionary_description :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Description , sam_v1_6_reference_sequence_dictionary_md5_checksum :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum@@ -99,27 +94,27 @@ molecule_topology uri ) =- "SAM_V1_6_Reference_Sequence_Dictionary { " ++- "reference_sequence_name = " ++- (show reference_sequence_name) ++- " , reference_sequence_length = " ++- (show reference_sequence_length) ++- " , reference_alternative_locus = " ++- (show reference_alternative_locus) ++- " , reference_alternative_sequence_names = " ++- (show reference_alternative_sequence_names) ++- " , genome_assembly_identifier = " ++- (show genome_assembly_identifier) ++- " , description = " ++- (show description) ++- " , md5_checksum = " ++- (show md5_checksum) ++- " , species = " ++- (show species) ++- " , molecule_topology = " ++- (show molecule_topology) ++- " , uri = " ++- (show uri) +++ "SAM_V1_6_Reference_Sequence_Dictionary { " +++ "sam_v1_6_reference_sequence_dictionary_reference_sequence_name = " +++ (show reference_sequence_name) +++ " , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = " +++ (show reference_sequence_length) +++ " , sam_v1_6_reference_sequence_dictionary_alternative_locus = " +++ (show reference_alternative_locus) +++ " , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names = " +++ (show reference_alternative_sequence_names) +++ " , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = " +++ (show genome_assembly_identifier) +++ " , sam_v1_6_reference_sequence_dictionary_description = " +++ (show description) +++ " , sam_v1_6_reference_sequence_dictionary_md5_checksum = " +++ (show md5_checksum) +++ " , sam_v1_6_reference_sequence_dictionary_species = " +++ (show species) +++ " , sam_v1_6_reference_sequence_dictionary_molecule_topology = " +++ (show molecule_topology) +++ " , sam_v1_6_reference_sequence_dictionary_uri = " +++ (show uri) ++ " }" -- | SN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -132,9 +127,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name where show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { " +++ "sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = " +++ (show value) ++ " }" -- | LN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -147,9 +142,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length where show (SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { " +++ "sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = " +++ (show value) ++ " }" -- | AH tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -162,9 +157,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus where show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { " +++ "sam_v1_6_reference_sequence_dictionary_alternative_locus_value = " +++ (show value) ++ " }" -- | AN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -177,9 +172,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names where show (SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { " +++ "sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value = " +++ (show value) ++ " }" -- | AS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -192,9 +187,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier where show (SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { " +++ "sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value = " +++ (show value) ++ " }" -- | DS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -207,9 +202,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Description where show (SAM_V1_6_Reference_Sequence_Dictionary_Description value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Description { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Description { " +++ "sam_v1_6_reference_sequence_dictionary_description_value = " +++ (show value) ++ " }" -- | M5 tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -222,9 +217,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum where show (SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum value) =- "SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { " +++ "sam_v1_6_reference_sequence_dictionary_md5_checksum_value = " +++ (show value) ++ " }" -- | SP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -237,9 +232,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Species where show (SAM_V1_6_Reference_Sequence_Dictionary_Species value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Species { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Species { " +++ "sam_v1_6_reference_sequence_dictionary_species_value = " +++ (show value) ++ " }" -- | TP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -252,9 +247,9 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology where show (SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology value) =- "SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { " +++ "sam_v1_6_reference_sequence_dictionary_molecule_topology_value = " +++ (show value) ++ " }" -- | UR tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@.@@ -267,7 +262,7 @@ instance Show SAM_V1_6_Reference_Sequence_Dictionary_URI where show (SAM_V1_6_Reference_Sequence_Dictionary_URI value) =- "SAM_V1_6_Reference_Sequence_Dictionary_URI { " ++- "value = " ++- (show value) +++ "SAM_V1_6_Reference_Sequence_Dictionary_URI { " +++ "sam_v1_6_reference_sequence_dictionary_uri_value = " +++ (show value) ++ " }"
src/Data/SAM/Version1_6/Read/Base.hs view
@@ -113,7 +113,7 @@ -- The file is checked for errors as it is parsed. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-readSAM_V1_6 :: FilePath -- ^ Path to SAM file.+readSAM_V1_6 :: FilePath -- ^ Input path to SAM file. -> IO SAM_V1_6 readSAM_V1_6 fp = do let lazysamfile = S.unfold StreamlyInternalFile.chunkReader fp
src/Data/SAM/Version1_6/Read/Error.hs view
@@ -3,13 +3,7 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedLists #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE PackageImports #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# Language QuasiQuotes #-} -- | -- Module : Data.SAM.Version1_6.Read.Error
src/Data/SAM/Version1_6/Read/Parser/Alignment/AOPT.hs view
@@ -43,24 +43,24 @@ parse_SAM_V1_6_Alignment_AOPT ) where +import Data.SAM.Version1_6.Alignment.AOPT import Data.SAM.Version1_6.Read.Error import Data.Attoparsec.ByteString.Char8 as DABC8 (isEndOfLine) import Data.Attoparsec.ByteString.Lazy as DABL-import qualified Data.ByteString as DB import Text.Regex.PCRE.Heavy -- | Defines a parser for the optional aopt field of alignment section of the SAM v1.6 file format. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-parse_SAM_V1_6_Alignment_AOPT :: Parser DB.ByteString+parse_SAM_V1_6_Alignment_AOPT :: Parser SAM_V1_6_Alignment_AOPT parse_SAM_V1_6_Alignment_AOPT = do- _ <- do alignmentaoptfieldtagp <- DABL.takeTill (== 58)- -- Parse AOPT tag of the alignment section.- case (alignmentaoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of- False -> fail $ show SAM_V1_6_Error_Alignment_AOPT_Tag_Incorrect_Format- True -> -- AOPT tag is in the accepted format. - return ()+ alignmentaoptfieldtag <- do alignmentaoptfieldtagp <- DABL.takeTill (== 58)+ -- Parse AOPT tag of the alignment section.+ case (alignmentaoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of+ False -> fail $ show SAM_V1_6_Error_Alignment_AOPT_Tag_Incorrect_Format+ True -> -- AOPT tag is in the accepted format. + return alignmentaoptfieldtagp _ <- word8 58 _ <- do alignmentaoptfieldtypep <- DABL.takeTill (== 58) -- Parse AOPT type of the alignment section.@@ -75,4 +75,6 @@ False -> fail $ show SAM_V1_6_Error_Alignment_AOPT_Value_Incorrect_Format True -> -- AOPT value is in the accepted format. return alignmentaoptfieldvaluep- return alignmentaoptfieldvalue+ return SAM_V1_6_Alignment_AOPT { sam_v1_6_alignment_aopt_tag = alignmentaoptfieldtag+ , sam_v1_6_alignment_aopt_value = alignmentaoptfieldvalue+ }
src/Data/SAM/Version1_6/Read/Parser/Alignment/FOPT.hs view
@@ -43,6 +43,7 @@ parse_SAM_V1_6_Alignment_FOPT ) where +import Data.SAM.Version1_6.Alignment.FOPT import Data.SAM.Version1_6.Read.Error import Data.Attoparsec.ByteString.Char8 as DABC8 (isEndOfLine)@@ -53,14 +54,14 @@ -- | Defines a parser for the optional fopt field of alignment section of the SAM v1.6 file format. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-parse_SAM_V1_6_Alignment_FOPT :: Parser Float+parse_SAM_V1_6_Alignment_FOPT :: Parser SAM_V1_6_Alignment_FOPT parse_SAM_V1_6_Alignment_FOPT = do- _ <- do alignmentfoptfieldtagp <- DABL.takeTill (== 58)- -- Parse FOPT tag of the alignment section.- case (alignmentfoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of- False -> fail $ show SAM_V1_6_Error_Alignment_FOPT_Tag_Incorrect_Format- True -> -- FOPT tag is in the accepted format. - return ()+ alignmentfoptfieldtag <- do alignmentfoptfieldtagp <- DABL.takeTill (== 58)+ -- Parse FOPT tag of the alignment section.+ case (alignmentfoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of+ False -> fail $ show SAM_V1_6_Error_Alignment_FOPT_Tag_Incorrect_Format+ True -> -- FOPT tag is in the accepted format. + return alignmentfoptfieldtagp _ <- word8 58 _ <- do alignmentfoptfieldtypep <- DABL.takeTill (== 58) -- Parse FOPT type of the alignment section.@@ -77,4 +78,6 @@ case (DBC8.readInteger alignmentfoptfieldvaluep) of Nothing -> return (-1) Just (alignmentfoptfieldvalueinteger,_) -> return $ (fromInteger alignmentfoptfieldvalueinteger :: Float)- return alignmentfoptfieldvalue+ return SAM_V1_6_Alignment_FOPT { sam_v1_6_alignment_fopt_tag = alignmentfoptfieldtag+ , sam_v1_6_alignment_fopt_value = alignmentfoptfieldvalue+ }
src/Data/SAM/Version1_6/Read/Parser/Alignment/HOPT.hs view
@@ -43,26 +43,24 @@ parse_SAM_V1_6_Alignment_HOPT ) where +import Data.SAM.Version1_6.Alignment.HOPT import Data.SAM.Version1_6.Read.Error import Data.Attoparsec.ByteString.Char8 as DABC8 (isEndOfLine) import Data.Attoparsec.ByteString.Lazy as DABL-import qualified Data.ByteString as DB-import Data.Sequence as DSeq-import Data.Word import Text.Regex.PCRE.Heavy -- | Defines a parser for the optional hopt field of alignment section of the SAM v1.6 file format. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-parse_SAM_V1_6_Alignment_HOPT :: Parser (Seq Word8)+parse_SAM_V1_6_Alignment_HOPT :: Parser SAM_V1_6_Alignment_HOPT parse_SAM_V1_6_Alignment_HOPT = do- _ <- do alignmenthoptfieldtagp <- DABL.takeTill (== 58)- -- Parse HOPT tag of the alignment section.- case (alignmenthoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of- False -> fail $ show SAM_V1_6_Error_Alignment_HOPT_Tag_Incorrect_Format- True -> -- HOPT tag is in the accepted format. - return ()+ alignmenthoptfieldtag <- do alignmenthoptfieldtagp <- DABL.takeTill (== 58)+ -- Parse HOPT tag of the alignment section.+ case (alignmenthoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of+ False -> fail $ show SAM_V1_6_Error_Alignment_HOPT_Tag_Incorrect_Format+ True -> -- HOPT tag is in the accepted format. + return alignmenthoptfieldtagp _ <- word8 58 _ <- do alignmenthoptfieldtypep <- DABL.takeTill (== 58) -- Parse HOPT type of the alignment section.@@ -76,5 +74,7 @@ case (alignmenthoptfieldvaluep =~ [re|([0-9A-F][0-9A-F])*|]) of False -> fail $ show SAM_V1_6_Error_Alignment_HOPT_Value_Incorrect_Format True -> -- HOPT value is in the accepted format.- return $ DSeq.fromList $ DB.unpack alignmenthoptfieldvaluep- return alignmenthoptfieldvalue+ return alignmenthoptfieldvaluep+ return SAM_V1_6_Alignment_HOPT { sam_v1_6_alignment_hopt_tag = alignmenthoptfieldtag+ , sam_v1_6_alignment_hopt_value = alignmenthoptfieldvalue+ }
src/Data/SAM/Version1_6/Read/Parser/Alignment/IOPT.hs view
@@ -43,6 +43,7 @@ parse_SAM_V1_6_Alignment_IOPT ) where +import Data.SAM.Version1_6.Alignment.IOPT import Data.SAM.Version1_6.Read.Error import Data.Attoparsec.ByteString.Char8 as DABC8 (isEndOfLine)@@ -53,14 +54,14 @@ -- | Defines a parser for the optional iopt field of alignment section of the SAM v1.6 file format. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-parse_SAM_V1_6_Alignment_IOPT :: Parser Integer+parse_SAM_V1_6_Alignment_IOPT :: Parser SAM_V1_6_Alignment_IOPT parse_SAM_V1_6_Alignment_IOPT = do- _ <- do alignmentioptfieldtagp <- DABL.takeTill (== 58)- -- Parse IOPT tag of the alignment section.- case (alignmentioptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of- False -> fail $ show SAM_V1_6_Error_Alignment_IOPT_Tag_Incorrect_Format- True -> -- IOPT tag is in the accepted format. - return ()+ alignmentioptfieldtag <- do alignmentioptfieldtagp <- DABL.takeTill (== 58)+ -- Parse IOPT tag of the alignment section.+ case (alignmentioptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of+ False -> fail $ show SAM_V1_6_Error_Alignment_IOPT_Tag_Incorrect_Format+ True -> -- IOPT tag is in the accepted format. + return alignmentioptfieldtagp _ <- word8 58 _ <- do alignmentioptfieldtypep <- DABL.takeTill (== 58) -- Parse IOPT type of the alignment section.@@ -77,4 +78,6 @@ case (DBC8.readInteger alignmentioptfieldvaluep) of Nothing -> return (-1) Just (alignmentioptfieldvalueinteger,_) -> return alignmentioptfieldvalueinteger- return alignmentioptfieldvalue+ return SAM_V1_6_Alignment_IOPT { sam_v1_6_alignment_iopt_tag = alignmentioptfieldtag+ , sam_v1_6_alignment_iopt_value = alignmentioptfieldvalue+ }
src/Data/SAM/Version1_6/Read/Parser/Alignment/ZOPT.hs view
@@ -43,24 +43,24 @@ parse_SAM_V1_6_Alignment_ZOPT ) where +import Data.SAM.Version1_6.Alignment.ZOPT import Data.SAM.Version1_6.Read.Error import Data.Attoparsec.ByteString.Char8 as DABC8 (isEndOfLine) import Data.Attoparsec.ByteString.Lazy as DABL-import qualified Data.ByteString as DB import Text.Regex.PCRE.Heavy -- | Defines a parser for the optional zopt field of alignment section of the SAM v1.6 file format. -- -- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.-parse_SAM_V1_6_Alignment_ZOPT :: Parser DB.ByteString+parse_SAM_V1_6_Alignment_ZOPT :: Parser SAM_V1_6_Alignment_ZOPT parse_SAM_V1_6_Alignment_ZOPT = do- _ <- do alignmentzoptfieldtagp <- DABL.takeTill (== 58)- -- Parse ZOPT tag of the alignment section.- case (alignmentzoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of- False -> fail $ show SAM_V1_6_Error_Alignment_ZOPT_Tag_Incorrect_Format- True -> -- ZOPT tag is in the accepted format. - return ()+ alignmentzoptfieldtag <- do alignmentzoptfieldtagp <- DABL.takeTill (== 58)+ -- Parse ZOPT tag of the alignment section.+ case (alignmentzoptfieldtagp =~ [re|[A-Za-z][A-Za-z0-9]|]) of+ False -> fail $ show SAM_V1_6_Error_Alignment_ZOPT_Tag_Incorrect_Format+ True -> -- ZOPT tag is in the accepted format. + return alignmentzoptfieldtagp _ <- word8 58 _ <- do alignmentzoptfieldtypep <- DABL.takeTill (== 58) -- Parse ZOPT type of the alignment section.@@ -75,4 +75,6 @@ False -> fail $ show SAM_V1_6_Error_Alignment_ZOPT_Value_Incorrect_Format True -> -- ZOPT value is in the accepted format. return alignmentzoptfieldvaluep- return alignmentzoptfieldvalue+ return SAM_V1_6_Alignment_ZOPT { sam_v1_6_alignment_zopt_tag = alignmentzoptfieldtag+ , sam_v1_6_alignment_zopt_value = alignmentzoptfieldvalue+ }
+ src/Data/SAM/Version1_6/Write/Base.hs view
@@ -0,0 +1,551 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TypeFamilies #-}++-- |+-- Module : Data.SAM.Version1_6.Write.Base+-- Copyright : (c) Matthew Mosior 2023+-- License : BSD-style+-- Maintainer : mattm.github@gmail.com+-- Portability : portable+--+-- = Description+--+-- This library enables the decoding/encoding of SAM, BAM and CRAM file formats.++module Data.SAM.Version1_6.Write.Base ( -- * Writing+ writeSAM_V1_6+ ) where++import Data.SAM.Version1_6.Base+import Data.SAM.Version1_6.Header.HD+import Data.SAM.Version1_6.Header.SQ+import Data.SAM.Version1_6.Header.RG+import Data.SAM.Version1_6.Header.PG+import Data.SAM.Version1_6.Header.CO+import Data.SAM.Version1_6.Alignment.Base+import Data.SAM.Version1_6.Alignment.AOPT+import Data.SAM.Version1_6.Alignment.IOPT+import Data.SAM.Version1_6.Alignment.FOPT+import Data.SAM.Version1_6.Alignment.ZOPT+import Data.SAM.Version1_6.Alignment.HOPT+import Data.SAM.Version1_6.Alignment.BOPT++import Data.ByteString as DB (pack,singleton)+import Data.ByteString.Lazy.Char8 as DBLC8 (fromStrict,unpack)+import Data.Foldable (toList)+import Data.Int (Int8,Int16,Int32)+import Data.List (intercalate)+import Data.Word+import Data.ByteString.Builder (toLazyByteString,word16LE,word32LE)+import System.IO (hFlush,hClose,hPutStr,IOMode(..),openFile, Handle)+++-- | Deconstruct a @"SAM_V1_6"@ to a `String`.+deconstructSAM_V1_6 :: SAM_V1_6+ -> String+deconstructSAM_V1_6 samv16 =+ ( intercalate "\n" $+ filter (not . null) [ sam_v1_6_file_level_metadata_tos+ , sam_v1_6_reference_sequence_dictionary_tos+ , sam_v1_6_read_group_tos+ , sam_v1_6_program_tos+ , sam_v1_6_one_line_comment_tos+ , sam_v1_6_alignment_tos+ ]+ )+ ++ "\n"+ where+ sam_v1_6_file_level_metadata_format_version_tos x = "VN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_file_level_metadata_format_version_value $+ sam_v1_6_file_level_metadata_format_version x+ )+ sam_v1_6_file_level_metadata_sorting_order_tos x = case (sam_v1_6_file_level_metadata_sorting_order x) of+ Nothing -> ""+ Just rgf -> "SO:" +++ ( unpack $+ fromStrict $+ sam_v1_6_file_level_metadata_sorting_order_value rgf+ )+ sam_v1_6_file_level_metadata_alignment_grouping_tos x = case (sam_v1_6_file_level_metadata_alignment_grouping x) of+ Nothing -> ""+ Just rgf -> "GO:" +++ ( unpack $+ fromStrict $+ sam_v1_6_file_level_metadata_alignment_grouping_value rgf+ )+ sam_v1_6_file_level_metadata_subsorting_order_tos x = case (sam_v1_6_file_level_metadata_subsorting_order x) of+ Nothing -> ""+ Just rgf -> "SS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_file_level_metadata_subsorting_order_value rgf+ )+ sam_v1_6_file_level_metadata_tos = case (sam_v1_6_file_level_metadata samv16) of+ Nothing -> ""+ Just hdf -> intercalate "\t" $+ filter (not . null) $+ [ "@HD"+ , sam_v1_6_file_level_metadata_format_version_tos hdf+ , sam_v1_6_file_level_metadata_sorting_order_tos hdf+ , sam_v1_6_file_level_metadata_alignment_grouping_tos hdf+ , sam_v1_6_file_level_metadata_subsorting_order_tos hdf + ]+ sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tos x = "SN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value $+ sam_v1_6_reference_sequence_dictionary_reference_sequence_name x+ )+ sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tos x = "LN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value $+ sam_v1_6_reference_sequence_dictionary_reference_sequence_length x+ )+ sam_v1_6_reference_sequence_dictionary_alternative_locus_tos x = case (sam_v1_6_reference_sequence_dictionary_alternative_locus x) of+ Nothing -> ""+ Just sqf -> "AH:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_alternative_locus_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tos x = case (sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names x) of+ Nothing -> "" + Just sqf -> "AN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tos x = case (sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier x) of+ Nothing -> ""+ Just sqf -> "AS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_description_tos x = case (sam_v1_6_reference_sequence_dictionary_description x) of+ Nothing -> ""+ Just sqf -> "DS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_description_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_md5_checksum_tos x = case (sam_v1_6_reference_sequence_dictionary_md5_checksum x) of+ Nothing -> ""+ Just sqf -> "M5:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_md5_checksum_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_species_tos x = case (sam_v1_6_reference_sequence_dictionary_species x) of+ Nothing -> ""+ Just sqf -> "SP:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_species_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_molecule_topology_tos x = case (sam_v1_6_reference_sequence_dictionary_molecule_topology x) of+ Nothing -> ""+ Just sqf -> "TP:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_molecule_topology_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_uri_tos x = case (sam_v1_6_reference_sequence_dictionary_uri x) of+ Nothing -> ""+ Just sqf -> "UR:" +++ ( unpack $+ fromStrict $+ sam_v1_6_reference_sequence_dictionary_uri_value sqf+ )+ sam_v1_6_reference_sequence_dictionary_tos = case (sam_v1_6_reference_sequence_dictionary samv16) of+ Nothing -> ""+ Just sqf -> intercalate "\n" $+ map (\x -> intercalate "\t" $+ filter (not .null) $+ [ "@SQ"+ , sam_v1_6_reference_sequence_dictionary_reference_sequence_name_tos x+ , sam_v1_6_reference_sequence_dictionary_reference_sequence_length_tos x+ , sam_v1_6_reference_sequence_dictionary_alternative_locus_tos x+ , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_tos x+ , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_tos x+ , sam_v1_6_reference_sequence_dictionary_description_tos x+ , sam_v1_6_reference_sequence_dictionary_md5_checksum_tos x+ , sam_v1_6_reference_sequence_dictionary_species_tos x+ , sam_v1_6_reference_sequence_dictionary_molecule_topology_tos x+ , sam_v1_6_reference_sequence_dictionary_uri_tos x+ ]+ ) (toList sqf)+ sam_v1_6_read_group_identifer_tos x = "ID:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_identifier_value $+ sam_v1_6_read_group_identifier x+ )+ sam_v1_6_read_group_barcode_sequence_tos x = case (sam_v1_6_read_group_barcode_sequence x) of+ Nothing -> ""+ Just rgf -> "BC:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_barcode_sequence_value rgf+ )+ sam_v1_6_read_group_sequencing_center_tos x = case (sam_v1_6_read_group_sequencing_center x) of+ Nothing -> ""+ Just rgf -> "CN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_sequencing_center_value rgf+ )+ sam_v1_6_read_group_description_tos x = case (sam_v1_6_read_group_description x) of+ Nothing -> ""+ Just rgf -> "DS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_description_value rgf+ )+ sam_v1_6_read_group_run_date_tos x = case (sam_v1_6_read_group_run_date x) of+ Nothing -> ""+ Just rgf -> "DT:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_run_date_value rgf+ )+ sam_v1_6_read_group_flow_order_tos x = case (sam_v1_6_read_group_flow_order x) of+ Nothing -> ""+ Just rgf -> "FO:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_flow_order_value rgf+ )+ sam_v1_6_read_group_key_sequence_tos x = case (sam_v1_6_read_group_key_sequence x) of+ Nothing -> ""+ Just rgf -> "KS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_key_sequence_value rgf+ )+ sam_v1_6_read_group_library_tos x = case (sam_v1_6_read_group_library x) of+ Nothing -> ""+ Just rgf -> "LB:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_library_value rgf+ )+ sam_v1_6_read_group_programs_tos x = case (sam_v1_6_read_group_programs x) of+ Nothing -> ""+ Just rgf -> "PG:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_programs_value rgf+ )+ sam_v1_6_read_group_predicted_median_insert_size_tos x = case (sam_v1_6_read_group_predicted_median_insert_size x) of+ Nothing -> ""+ Just rgf -> "PI:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_predicted_median_insert_size_value rgf+ )+ sam_v1_6_read_group_platform_tos x = case (sam_v1_6_read_group_platform x) of+ Nothing -> ""+ Just rgf -> "PL:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_platform_value rgf+ )+ sam_v1_6_read_group_platform_model_tos x = case (sam_v1_6_read_group_platform_model x) of+ Nothing -> ""+ Just rgf -> "PM:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_platform_model_value rgf+ )+ sam_v1_6_read_group_platform_unit_tos x = case (sam_v1_6_read_group_platform_unit x) of+ Nothing -> ""+ Just rgf -> "PU:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_platform_unit_value rgf+ )+ sam_v1_6_read_group_sample_tos x = case (sam_v1_6_read_group_sample x) of+ Nothing -> ""+ Just rgf -> "SM:" +++ ( unpack $+ fromStrict $+ sam_v1_6_read_group_sample_value rgf+ )+ sam_v1_6_read_group_tos = case (sam_v1_6_read_group samv16) of+ Nothing -> ""+ Just rgf -> intercalate "\n" $+ map (\x -> intercalate "\t" $+ filter (not . null) $+ [ "@RG"+ , sam_v1_6_read_group_identifer_tos x+ , sam_v1_6_read_group_barcode_sequence_tos x+ , sam_v1_6_read_group_sequencing_center_tos x+ , sam_v1_6_read_group_description_tos x+ , sam_v1_6_read_group_run_date_tos x+ , sam_v1_6_read_group_flow_order_tos x+ , sam_v1_6_read_group_key_sequence_tos x+ , sam_v1_6_read_group_library_tos x+ , sam_v1_6_read_group_programs_tos x+ , sam_v1_6_read_group_predicted_median_insert_size_tos x+ , sam_v1_6_read_group_platform_tos x+ , sam_v1_6_read_group_platform_model_tos x+ , sam_v1_6_read_group_platform_unit_tos x+ , sam_v1_6_read_group_sample_tos x+ ]+ ) (toList rgf)+ sam_v1_6_program_record_identifier_tos x = "ID:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_record_identifier_value $+ sam_v1_6_program_record_identifier x+ )+ sam_v1_6_program_name_tos x = case (sam_v1_6_program_name x) of+ Nothing -> ""+ Just rgf -> "PN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_name_value rgf+ )+ sam_v1_6_program_command_line_tos x = case (sam_v1_6_program_command_line x) of+ Nothing -> ""+ Just rgf -> "CL:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_command_line_value rgf+ )+ sam_v1_6_program_previous_pg_id_tos x = case (sam_v1_6_program_previous_pg_id x) of+ Nothing -> ""+ Just rgf -> "PP:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_previous_pg_id_value rgf+ )+ sam_v1_6_program_description_tos x = case (sam_v1_6_program_description x) of+ Nothing -> ""+ Just rgf -> "DS:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_description_value rgf+ )+ sam_v1_6_program_version_tos x = case (sam_v1_6_program_version x) of+ Nothing -> ""+ Just rgf -> "VN:" +++ ( unpack $+ fromStrict $+ sam_v1_6_program_version_value rgf+ )+ sam_v1_6_program_tos = case (sam_v1_6_program samv16) of+ Nothing -> ""+ Just pgf -> intercalate "\t" $+ filter (not . null) $+ [ "@PG"+ , sam_v1_6_program_record_identifier_tos pgf+ , sam_v1_6_program_name_tos pgf+ , sam_v1_6_program_command_line_tos pgf+ , sam_v1_6_program_previous_pg_id_tos pgf+ , sam_v1_6_program_description_tos pgf+ , sam_v1_6_program_version_tos pgf+ ]+ sam_v1_6_one_line_comment_tos = case (sam_v1_6_one_line_comment samv16) of+ Nothing -> ""+ Just cof -> intercalate "\n" $+ map (\x -> intercalate "\t" $+ filter (not . null) + [ "@CO"+ , unpack $+ fromStrict $+ sam_v1_6_one_line_comment_value x+ ]+ ) (toList cof)+ sam_v1_6_alignment_tos = intercalate "\n" $+ map (\x -> case (null $ sam_v1_6_alignment_opts x) of+ True -> sam_v1_6_alignment_mand x + False -> intercalate "\t"+ [ sam_v1_6_alignment_mand x+ , sam_v1_6_alignment_opts x+ ] ) (toList $ sam_v1_6_alignment samv16)+ sam_v1_6_alignment_mand x = intercalate "\t" $+ filter (not . null)+ [ unpack $ fromStrict $ sam_v1_6_alignment_qname x + , show $ sam_v1_6_alignment_flag x + , unpack $ fromStrict $ sam_v1_6_alignment_rname x + , show $ sam_v1_6_alignment_pos x + , show $ sam_v1_6_alignment_mapq x + , unpack $ fromStrict $ sam_v1_6_alignment_cigar x + , unpack $ fromStrict $ sam_v1_6_alignment_rnext x + , show $ sam_v1_6_alignment_pnext x + , show $ sam_v1_6_alignment_tlen x + , unpack $ fromStrict $ sam_v1_6_alignment_seq x + , unpack $ fromStrict $ sam_v1_6_alignment_qual x+ ]+ sam_v1_6_alignment_opts x = intercalate "\t" $+ filter (not . null)+ [ sam_v1_6_alignment_aopt_d x + , sam_v1_6_alignment_iopt_d x + , sam_v1_6_alignment_fopt_d x + , sam_v1_6_alignment_zopt_d x+ , sam_v1_6_alignment_hopt_d x + , sam_v1_6_alignment_bopt_d x+ ]+ sam_v1_6_alignment_aopt_d x = case (sam_v1_6_alignment_aopt x) of+ Nothing -> ""+ Just aopt -> ( unpack $+ fromStrict $+ sam_v1_6_alignment_aopt_tag aopt+ )+ +++ ":A:"+ +++ ( unpack $+ fromStrict $+ sam_v1_6_alignment_aopt_value aopt+ )+ sam_v1_6_alignment_iopt_d x = case (sam_v1_6_alignment_iopt x) of+ Nothing -> ""+ Just iopt -> ( unpack $+ fromStrict $+ sam_v1_6_alignment_iopt_tag iopt+ )+ +++ ":i:"+ +++ ( show $+ sam_v1_6_alignment_iopt_value iopt+ )+ sam_v1_6_alignment_fopt_d x = case (sam_v1_6_alignment_fopt x) of+ Nothing -> ""+ Just fopt -> ( unpack $+ fromStrict $+ sam_v1_6_alignment_fopt_tag fopt+ )+ +++ ":f:"+ +++ ( show $+ sam_v1_6_alignment_fopt_value fopt+ )+ sam_v1_6_alignment_zopt_d x = case (sam_v1_6_alignment_zopt x) of+ Nothing -> ""+ Just zopt -> ( unpack $+ fromStrict $+ sam_v1_6_alignment_zopt_tag zopt+ )+ +++ ":Z:"+ +++ ( unpack $+ fromStrict $+ sam_v1_6_alignment_zopt_value zopt+ )+ sam_v1_6_alignment_hopt_d x = case (sam_v1_6_alignment_hopt x) of+ Nothing -> ""+ Just hopt -> ( unpack $+ fromStrict $+ sam_v1_6_alignment_hopt_tag hopt+ )+ +++ ":H:"+ +++ ( unpack $+ fromStrict $+ sam_v1_6_alignment_hopt_value hopt+ )+ sam_v1_6_alignment_bopt_d x = case (sam_v1_6_alignment_bopt x) of+ Nothing -> ""+ Just bopt -> concat $+ filter (not . null)+ [ sam_v1_6_alignment_bopt_int8_d bopt+ , sam_v1_6_alignment_bopt_word8_d bopt+ , sam_v1_6_alignment_bopt_int16_d bopt+ , sam_v1_6_alignment_bopt_word16_d bopt+ , sam_v1_6_alignment_bopt_int32_d bopt+ , sam_v1_6_alignment_bopt_word32_d bopt+ , sam_v1_6_alignment_bopt_float_d bopt+ ]+ sam_v1_6_alignment_bopt_int8_d x = case (sam_v1_6_alignment_bopt_int8 x) of+ Nothing -> ""+ Just bopt_int8 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_int8_tag bopt_int8) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_int8_type bopt_int8) +++ ":" +++ (concat $ map encodeInt8 $ toList $ sam_v1_6_alignment_bopt_int8_value bopt_int8)+ sam_v1_6_alignment_bopt_word8_d x = case (sam_v1_6_alignment_bopt_word8 x) of + Nothing -> ""+ Just bopt_word8 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_word8_tag bopt_word8) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_word8_type bopt_word8) +++ ":" +++ (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_word8_value bopt_word8)+ sam_v1_6_alignment_bopt_int16_d x = case (sam_v1_6_alignment_bopt_int16 x) of + Nothing -> ""+ Just bopt_int16 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_int16_tag bopt_int16) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_int16_type bopt_int16) +++ ":" +++ (concat $ map encodeInt16 $ toList $ sam_v1_6_alignment_bopt_int16_value bopt_int16)+ sam_v1_6_alignment_bopt_word16_d x = case (sam_v1_6_alignment_bopt_word16 x) of+ Nothing -> ""+ Just bopt_word16 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_word16_tag bopt_word16) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_word16_type bopt_word16) +++ ":" +++ (concat $ map encodeWord16 $ toList $ sam_v1_6_alignment_bopt_word16_value bopt_word16)+ sam_v1_6_alignment_bopt_int32_d x = case (sam_v1_6_alignment_bopt_int32 x) of+ Nothing -> ""+ Just bopt_int32 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_int32_tag bopt_int32) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_int32_type bopt_int32) +++ ":" +++ (concat $ map encodeInt32 $ toList $ sam_v1_6_alignment_bopt_int32_value bopt_int32)+ sam_v1_6_alignment_bopt_word32_d x = case (sam_v1_6_alignment_bopt_word32 x) of + Nothing -> ""+ Just bopt_word32 -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_word32_tag bopt_word32) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_word32_type bopt_word32) +++ ":" +++ (concat $ map encodeWord32 $ toList $ sam_v1_6_alignment_bopt_word32_value bopt_word32)+ sam_v1_6_alignment_bopt_float_d x = case (sam_v1_6_alignment_bopt_float x) of + Nothing -> ""+ Just bopt_float -> (unpack $ fromStrict $ pack $ toList $ sam_v1_6_alignment_bopt_float_tag bopt_float) +++ ":" +++ (unpack $ fromStrict $ singleton $ sam_v1_6_alignment_bopt_float_type bopt_float) +++ ":" +++ (concat $ map show $ toList $ sam_v1_6_alignment_bopt_float_value bopt_float)+ encodeInt8 :: Int8 -> [Char]+ encodeInt8 = show+ encodeInt16 :: Int16 -> [Char]+ encodeInt16 = show+ encodeWord16 :: Word16 -> [Char]+ encodeWord16 = unpack . toLazyByteString . word16LE+ encodeInt32 :: Int32 -> [Char]+ encodeInt32 = show+ encodeWord32 :: Word32 -> [Char]+ encodeWord32 = unpack . toLazyByteString . word32LE++-- | Write @"SAM_V1_6"@ to a file.+-- Calls deconstructSAM_V1_6.+hPutSAM_V1_6 :: Handle+ -> SAM_V1_6+ -> IO ()+hPutSAM_V1_6 h samv16 = System.IO.hPutStr h+ (deconstructSAM_V1_6 samv16)++-- | Write a @"SAM_V1_6"@ to a file.+--+-- See the [SAM v1.6](http://samtools.github.io/hts-specs/SAMv1.pdf) specification documentation.+writeSAM_V1_6 :: FilePath -- ^ Output path to SAM file.+ -> SAM_V1_6+ -> IO ()+writeSAM_V1_6 fp samv16 = do+ h <- openFile fp+ WriteMode+ hPutSAM_V1_6 h+ samv16+ hFlush h+ hClose h
test/Main.hs view
@@ -2,13 +2,16 @@ import Data.SAM.Version1_6.Base import Data.SAM.Version1_6.Alignment+import Data.SAM.Version1_6.Alignment.IOPT+import Data.SAM.Version1_6.Alignment.ZOPT import Data.SAM.Version1_6.Alignment.BOPT import Data.SAM.Version1_6.Header import Data.SAM.Version1_6.Read.Base import Data.Sequence (fromList)-import Data.String (fromString)+import Data.String (fromString) import Test.Hspec+import Data.SAM.Version1_6.Write.Base main :: IO () main = hspec $ do@@ -26,40 +29,16 @@ describe "toy1.sam" $ do it "Ensures that readSAM_V1_6 can read and parse a SAM file with multiple reference sequence dictionary (@SQ) optional header fields." $ do readSAM_V1_6 "test/examples/toy1.sam" `shouldReturn` toy1sam+ describe "Data.SAM.Version1_6.Write.Base" $ do+ describe "writeSAM_V1_6" $ do+ describe "toy2.sam" $ do+ it "Ensures writeSAM_V1_6 produces the a sam file equivalent to what was parsed via readSAM_V1_6." $ do+ toy2 <- readSAM_V1_6 "test/examples/toy2.sam"+ writeSAM_V1_6 "test/examples/toy2f.sam" toy2+ toy2f <- readSAM_V1_6 "test/examples/toy2f.sam"+ toy2 `shouldBe` toy2f where- toy1sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing- , sam_v1_6_reference_sequence_dictionary = Just (fromList [SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "45" } , sam_v1_6_reference_sequence_dictionary_reference_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing },SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref2" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "40" } , sam_v1_6_reference_sequence_dictionary_reference_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing }])- , sam_v1_6_read_group = Nothing- , sam_v1_6_program = Nothing- , sam_v1_6_one_line_comment = Nothing- , sam_v1_6_alignment = fromList [ SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Just SAM_V1_6_Alignment_BOPT { sam_v1_6_alignment_bopt_int8 = Nothing , sam_v1_6_alignment_bopt_word8 = Nothing , sam_v1_6_alignment_bopt_int16 = Nothing , sam_v1_6_alignment_bopt_word16 = Just SAM_V1_6_Alignment_BOPT_Word16 { sam_v1_6_alignment_bopt_word16_tag = fromList [88,88] , sam_v1_6_alignment_bopt_word16_type = 83 , sam_v1_6_alignment_bopt_word16_value = fromList [49,50,53,54,49,44,50,44,50,48,44,49,49,50] } , sam_v1_6_alignment_bopt_int32 = Nothing , sam_v1_6_alignment_bopt_word32 = Nothing , sam_v1_6_alignment_bopt_float = Nothing } },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing- }- ]- }- toy2sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Just SAM_V1_6_File_Level_Metadata { sam_v1_6_file_level_metadata_format_version = SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_value = fromString "1.6" } , sam_v1_6_file_level_metadata_sorting_order = Just SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_value = fromString "coordinate" } , sam_v1_6_file_level_metadata_alignment_grouping = Nothing , sam_v1_6_file_level_metadata_subsorting_order = Nothing }- , sam_v1_6_reference_sequence_dictionary = Just (fromList [SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "45" } , sam_v1_6_reference_sequence_dictionary_reference_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing }])- , sam_v1_6_read_group = Nothing- , sam_v1_6_program = Nothing- , sam_v1_6_one_line_comment = Nothing- , sam_v1_6_alignment = fromList [ SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 99 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M2I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "3S6M1P1I4M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGATA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5S6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "GCCTAAGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Just (fromString "ref,29,-,6H5M,17,0;") , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 2064 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 17 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Just (fromString "ref,9,+,5S6M,30,1;") , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 147 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGGCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Just 1 , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing- }- ]- }- toy4sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing- , sam_v1_6_reference_sequence_dictionary = Nothing- , sam_v1_6_read_group = Nothing- , sam_v1_6_program = Nothing- , sam_v1_6_one_line_comment = Nothing- , sam_v1_6_alignment = fromList [ SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Just SAM_V1_6_Alignment_BOPT { sam_v1_6_alignment_bopt_int8 = Nothing , sam_v1_6_alignment_bopt_word8 = Nothing , sam_v1_6_alignment_bopt_int16 = Nothing , sam_v1_6_alignment_bopt_word16 = Just SAM_V1_6_Alignment_BOPT_Word16 { sam_v1_6_alignment_bopt_word16_tag = fromList [88,88] , sam_v1_6_alignment_bopt_word16_type = 83 , sam_v1_6_alignment_bopt_word16_value = fromList [49,50,53,54,49,44,50,44,50,48,44,49,49,50] } , sam_v1_6_alignment_bopt_int32 = Nothing , sam_v1_6_alignment_bopt_word32 = Nothing , sam_v1_6_alignment_bopt_float = Nothing } },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing- }- ]- }- toy5sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing- , sam_v1_6_reference_sequence_dictionary = Nothing- , sam_v1_6_read_group = Nothing- , sam_v1_6_program = Nothing- , sam_v1_6_one_line_comment = Nothing- , sam_v1_6_alignment = fromList [ SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing- }- ]- }+ toy1sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing , sam_v1_6_reference_sequence_dictionary = Just (fromList [SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "45" } , sam_v1_6_reference_sequence_dictionary_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing },SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref2" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "40" } , sam_v1_6_reference_sequence_dictionary_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing }]) , sam_v1_6_read_group = Nothing , sam_v1_6_program = Nothing , sam_v1_6_one_line_comment = Nothing , sam_v1_6_alignment = fromList [SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Just SAM_V1_6_Alignment_BOPT { sam_v1_6_alignment_bopt_int8 = Nothing , sam_v1_6_alignment_bopt_word8 = Nothing , sam_v1_6_alignment_bopt_int16 = Nothing , sam_v1_6_alignment_bopt_word16 = Just SAM_V1_6_Alignment_BOPT_Word16 { sam_v1_6_alignment_bopt_word16_tag = fromList [88,88] , sam_v1_6_alignment_bopt_word16_type = 83 , sam_v1_6_alignment_bopt_word16_value = fromList [49,50,53,54,49,44,50,44,50,48,44,49,49,50] } , sam_v1_6_alignment_bopt_int32 = Nothing , sam_v1_6_alignment_bopt_word32 = Nothing , sam_v1_6_alignment_bopt_float = Nothing } },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing }] }+ toy2sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Just SAM_V1_6_File_Level_Metadata { sam_v1_6_file_level_metadata_format_version = SAM_V1_6_File_Level_Metadata_Format_Version { sam_v1_6_file_level_metadata_format_version_value = fromString "1.6" } , sam_v1_6_file_level_metadata_sorting_order = Just SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_value = fromString "coordinate" } , sam_v1_6_file_level_metadata_alignment_grouping = Nothing , sam_v1_6_file_level_metadata_subsorting_order = Nothing } , sam_v1_6_reference_sequence_dictionary = Just (fromList [SAM_V1_6_Reference_Sequence_Dictionary { sam_v1_6_reference_sequence_dictionary_reference_sequence_name = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name { sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = fromString "ref" } , sam_v1_6_reference_sequence_dictionary_reference_sequence_length = SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length { sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = fromString "45" } , sam_v1_6_reference_sequence_dictionary_alternative_locus = Nothing , sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names = Nothing , sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier = Nothing , sam_v1_6_reference_sequence_dictionary_description = Nothing , sam_v1_6_reference_sequence_dictionary_md5_checksum = Nothing , sam_v1_6_reference_sequence_dictionary_species = Nothing , sam_v1_6_reference_sequence_dictionary_molecule_topology = Nothing , sam_v1_6_reference_sequence_dictionary_uri = Nothing }]) , sam_v1_6_read_group = Nothing , sam_v1_6_program = Nothing , sam_v1_6_one_line_comment = Nothing , sam_v1_6_alignment = fromList [SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 99 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M2I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "3S6M1P1I4M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGATA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5S6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "GCCTAAGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Just SAM_V1_6_Alignment_ZOPT { sam_v1_6_alignment_zopt_tag = fromString "SA" , sam_v1_6_alignment_zopt_value = fromString "ref,29,-,6H5M,17,0;" } , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 2064 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 17 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Just SAM_V1_6_Alignment_ZOPT { sam_v1_6_alignment_zopt_tag = fromString "SA" , sam_v1_6_alignment_zopt_value = fromString "ref,9,+,5S6M,30,1;" } , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 147 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGGCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Just SAM_V1_6_Alignment_IOPT { sam_v1_6_alignment_iopt_tag = fromString "NM" , sam_v1_6_alignment_iopt_value = 1 } , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing }] } + toy4sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing , sam_v1_6_reference_sequence_dictionary = Nothing , sam_v1_6_read_group = Nothing , sam_v1_6_program = Nothing , sam_v1_6_one_line_comment = Nothing , sam_v1_6_alignment = fromList [SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Just SAM_V1_6_Alignment_BOPT { sam_v1_6_alignment_bopt_int8 = Nothing , sam_v1_6_alignment_bopt_word8 = Nothing , sam_v1_6_alignment_bopt_int16 = Nothing , sam_v1_6_alignment_bopt_word16 = Just SAM_V1_6_Alignment_BOPT_Word16 { sam_v1_6_alignment_bopt_word16_tag = fromList [88,88] , sam_v1_6_alignment_bopt_word16_type = 83 , sam_v1_6_alignment_bopt_word16_value = fromList [49,50,53,54,49,44,50,44,50,48,44,49,49,50] } , sam_v1_6_alignment_bopt_int32 = Nothing , sam_v1_6_alignment_bopt_word32 = Nothing , sam_v1_6_alignment_bopt_float = Nothing } },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing }] } + toy5sam = SAM_V1_6 { sam_v1_6_file_level_metadata = Nothing , sam_v1_6_reference_sequence_dictionary = Nothing , sam_v1_6_read_group = Nothing , sam_v1_6_program = Nothing , sam_v1_6_one_line_comment = Nothing , sam_v1_6_alignment = fromList [SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 163 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 7 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "8M4I4M1D3M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 37 , sam_v1_6_alignment_tlen = 39 , sam_v1_6_alignment_seq = fromString "TTAGATAAAGAGGATACTG" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r002" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "1S2I6M1P1I1P1I4M2I" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AAAAGATAAGGGATAAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 9 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "5H6M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "AGCTAA" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r004" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 16 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6M14N1I5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ATAGCTCTCAGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r003" , sam_v1_6_alignment_flag = 16 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 29 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "6H5M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "TAGGC" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "r001" , sam_v1_6_alignment_flag = 83 , sam_v1_6_alignment_rname = fromString "ref" , sam_v1_6_alignment_pos = 37 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M" , sam_v1_6_alignment_rnext = fromString "=" , sam_v1_6_alignment_pnext = 7 , sam_v1_6_alignment_tlen = -39 , sam_v1_6_alignment_seq = fromString "CAGCGCCAT" , sam_v1_6_alignment_qual = fromString "*" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x1" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 1 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "20M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aggttttataaaacaaataa" , sam_v1_6_alignment_qual = fromString "????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x2" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 2 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "21M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ggttttataaaacaaataatt" , sam_v1_6_alignment_qual = fromString "?????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x3" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 6 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "9M4I13M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "ttataaaacAAATaattaagtctaca" , sam_v1_6_alignment_qual = fromString "??????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x4" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 10 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "25M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "CaaaTaattaagtctacagagcaac" , sam_v1_6_alignment_qual = fromString "?????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x5" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 12 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "24M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "aaTaattaagtctacagagcaact" , sam_v1_6_alignment_qual = fromString "????????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing },SAM_V1_6_Alignment { sam_v1_6_alignment_qname = fromString "x6" , sam_v1_6_alignment_flag = 0 , sam_v1_6_alignment_rname = fromString "ref2" , sam_v1_6_alignment_pos = 14 , sam_v1_6_alignment_mapq = 30 , sam_v1_6_alignment_cigar = fromString "23M" , sam_v1_6_alignment_rnext = fromString "*" , sam_v1_6_alignment_pnext = 0 , sam_v1_6_alignment_tlen = 0 , sam_v1_6_alignment_seq = fromString "Taattaagtctacagagcaacta" , sam_v1_6_alignment_qual = fromString "???????????????????????" , sam_v1_6_alignment_aopt = Nothing , sam_v1_6_alignment_iopt = Nothing , sam_v1_6_alignment_fopt = Nothing , sam_v1_6_alignment_zopt = Nothing , sam_v1_6_alignment_hopt = Nothing , sam_v1_6_alignment_bopt = Nothing }] }