hs-samtools-0.8.0.0: src/Data/SAM/Version1_6/Header/HD.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
-- |
-- Module : Data.SAM.Version1_6.Header.HD
-- 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.Header.HD ( -- * SAM version 1.6 File-level metadata data type
SAM_V1_6_File_Level_Metadata(..),
-- * SAM version 1.6 File-Level Metadata data types
SAM_V1_6_File_Level_Metadata_Format_Version(..),
SAM_V1_6_File_Level_Metadata_Sorting_Order(..),
SAM_V1_6_File_Level_Metadata_Alignment_Grouping(..),
SAM_V1_6_File_Level_Metadata_SubSorting_Order(..)
) where
import Data.ByteString
import Data.Data
import Generics.Deriving.Base
-- | Custom SAM (version 1.6) @"SAM_V1_6_File_Level_Metadata"@ 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_File_Level_Metadata = 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_sorting_order :: Maybe SAM_V1_6_File_Level_Metadata_Sorting_Order
, sam_v1_6_file_level_metadata_alignment_grouping :: Maybe SAM_V1_6_File_Level_Metadata_Alignment_Grouping
, sam_v1_6_file_level_metadata_subsorting_order :: Maybe SAM_V1_6_File_Level_Metadata_SubSorting_Order
}
deriving (Generic,Typeable)
instance Eq SAM_V1_6_File_Level_Metadata where
SAM_V1_6_File_Level_Metadata sam_v1_6_file_level_metadata_format_version1
sam_v1_6_file_level_metadata_sorting_order1
sam_v1_6_file_level_metadata_alignment_grouping1
sam_v1_6_file_level_metadata_subsorting_order1 == SAM_V1_6_File_Level_Metadata sam_v1_6_file_level_metadata_format_version2
sam_v1_6_file_level_metadata_sorting_order2
sam_v1_6_file_level_metadata_alignment_grouping2
sam_v1_6_file_level_metadata_subsorting_order2 = sam_v1_6_file_level_metadata_format_version1 == sam_v1_6_file_level_metadata_format_version2 &&
sam_v1_6_file_level_metadata_sorting_order1 == sam_v1_6_file_level_metadata_sorting_order2 &&
sam_v1_6_file_level_metadata_alignment_grouping1 == sam_v1_6_file_level_metadata_alignment_grouping2 &&
sam_v1_6_file_level_metadata_subsorting_order1 == sam_v1_6_file_level_metadata_subsorting_order2
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 { " ++
"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"@.
newtype 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 :: ByteString
}
deriving (Generic,Typeable)
instance Eq SAM_V1_6_File_Level_Metadata_Format_Version where
SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_value1 == SAM_V1_6_File_Level_Metadata_Format_Version sam_v1_6_file_level_metadata_format_version_value2 = sam_v1_6_file_level_metadata_format_version_value1 == sam_v1_6_file_level_metadata_format_version_value2
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 { " ++
"sam_v1_6_file_level_metadata_format_version_value = " ++
(show value) ++
" }"
-- | SO tag for @"SAM_V1_6_File_Level_Metadata"@.
newtype SAM_V1_6_File_Level_Metadata_Sorting_Order = SAM_V1_6_File_Level_Metadata_Sorting_Order { sam_v1_6_file_level_metadata_sorting_order_value :: ByteString
}
deriving (Generic,Typeable)
instance Eq SAM_V1_6_File_Level_Metadata_Sorting_Order where
SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_value1 == SAM_V1_6_File_Level_Metadata_Sorting_Order sam_v1_6_file_level_metadata_sorting_order_value2 = sam_v1_6_file_level_metadata_sorting_order_value1 == sam_v1_6_file_level_metadata_sorting_order_value2
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 { " ++
"sam_v1_6_file_level_metadata_sorting_order_value = " ++
(show value) ++
" }"
-- | GO tag for @"SAM_V1_6_File_Level_Metadata"@.
newtype SAM_V1_6_File_Level_Metadata_Alignment_Grouping = SAM_V1_6_File_Level_Metadata_Alignment_Grouping { sam_v1_6_file_level_metadata_alignment_grouping_value :: ByteString
}
deriving (Generic,Typeable)
instance Eq SAM_V1_6_File_Level_Metadata_Alignment_Grouping where
SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_value1 == SAM_V1_6_File_Level_Metadata_Alignment_Grouping sam_v1_6_file_level_metadata_alignment_grouping_value2 = sam_v1_6_file_level_metadata_alignment_grouping_value1 == sam_v1_6_file_level_metadata_alignment_grouping_value2
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 { " ++
"sam_v1_6_file_level_metadata_alignment_grouping_value = " ++
(show value) ++
" }"
-- | SS tag for @"SAM_V1_6_File_Level_Metadata"@.
newtype SAM_V1_6_File_Level_Metadata_SubSorting_Order = SAM_V1_6_File_Level_Metadata_SubSorting_Order { sam_v1_6_file_level_metadata_subsorting_order_value :: ByteString
}
deriving (Generic,Typeable)
instance Eq SAM_V1_6_File_Level_Metadata_SubSorting_Order where
SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_value1 == SAM_V1_6_File_Level_Metadata_SubSorting_Order sam_v1_6_file_level_metadata_subsorting_order_value2 = sam_v1_6_file_level_metadata_subsorting_order_value1 == sam_v1_6_file_level_metadata_subsorting_order_value2
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 { " ++
"sam_v1_6_file_level_metadata_subsorting_order_value = " ++
(show value) ++
" }"