{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies #-} -- | -- Module : Data.SAM.Version1_6.Header.SQ -- 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.SQ ( -- * SAM version 1.6 Reference sequence dictionary data type SAM_V1_6_Reference_Sequence_Dictionary(..), -- * SAM version 1.6 Reference sequence dictionary data types SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name(..), SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length(..), SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus(..), SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names(..), SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier(..), SAM_V1_6_Reference_Sequence_Dictionary_Description(..), SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum(..), SAM_V1_6_Reference_Sequence_Dictionary_Species(..), SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology(..), SAM_V1_6_Reference_Sequence_Dictionary_URI(..) ) where import Data.ByteString import Data.Data import Generics.Deriving.Base -- | Custom SAM (version 1.6) @"SAM_V1_6_Reference_Sequence_Dictionary"@ 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_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_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 , sam_v1_6_reference_sequence_dictionary_species :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Species , sam_v1_6_reference_sequence_dictionary_molecule_topology :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology , sam_v1_6_reference_sequence_dictionary_uri :: Maybe SAM_V1_6_Reference_Sequence_Dictionary_URI } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary where SAM_V1_6_Reference_Sequence_Dictionary sam_v1_6_reference_sequence_dictionary_reference_sequence_name1 sam_v1_6_reference_sequence_dictionary_reference_sequence_length1 sam_v1_6_reference_sequence_dictionary_reference_alternative_locus1 sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names1 sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier1 sam_v1_6_reference_sequence_dictionary_description1 sam_v1_6_reference_sequence_dictionary_md5_checksum1 sam_v1_6_reference_sequence_dictionary_species1 sam_v1_6_reference_sequence_dictionary_molecule_topology1 sam_v1_6_reference_sequence_dictionary_uri1 == SAM_V1_6_Reference_Sequence_Dictionary sam_v1_6_reference_sequence_dictionary_reference_sequence_name2 sam_v1_6_reference_sequence_dictionary_reference_sequence_length2 sam_v1_6_reference_sequence_dictionary_reference_alternative_locus2 sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names2 sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier2 sam_v1_6_reference_sequence_dictionary_description2 sam_v1_6_reference_sequence_dictionary_md5_checksum2 sam_v1_6_reference_sequence_dictionary_species2 sam_v1_6_reference_sequence_dictionary_molecule_topology2 sam_v1_6_reference_sequence_dictionary_uri2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_name1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_name2 && sam_v1_6_reference_sequence_dictionary_reference_sequence_length1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_length2 && sam_v1_6_reference_sequence_dictionary_reference_alternative_locus1 == sam_v1_6_reference_sequence_dictionary_reference_alternative_locus2 && sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names1 == sam_v1_6_reference_sequence_dictionary_reference_alternative_reference_sequence_names2 && sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier1 == sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier2 && sam_v1_6_reference_sequence_dictionary_description1 == sam_v1_6_reference_sequence_dictionary_description2 && sam_v1_6_reference_sequence_dictionary_md5_checksum1 == sam_v1_6_reference_sequence_dictionary_md5_checksum2 && sam_v1_6_reference_sequence_dictionary_species1 == sam_v1_6_reference_sequence_dictionary_species2 && sam_v1_6_reference_sequence_dictionary_molecule_topology1 == sam_v1_6_reference_sequence_dictionary_molecule_topology2 && sam_v1_6_reference_sequence_dictionary_uri1 == sam_v1_6_reference_sequence_dictionary_uri2 instance Show SAM_V1_6_Reference_Sequence_Dictionary where show (SAM_V1_6_Reference_Sequence_Dictionary reference_sequence_name reference_sequence_length reference_alternative_locus reference_alternative_sequence_names genome_assembly_identifier description md5_checksum species molecule_topology 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"@. newtype 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 :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name where SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Name sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_reference_sequence_name_value = " ++ (show value) ++ " }" -- | LN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype 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 :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length where SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Reference_Sequence_Length sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2 = sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value1 == sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_reference_sequence_length_value = " ++ (show value) ++ " }" -- | AH tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus { sam_v1_6_reference_sequence_dictionary_alternative_locus_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus where SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Locus sam_v1_6_reference_sequence_dictionary_alternative_locus_value2 = sam_v1_6_reference_sequence_dictionary_alternative_locus_value1 == sam_v1_6_reference_sequence_dictionary_alternative_locus_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_alternative_locus_value = " ++ (show value) ++ " }" -- | AN tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names = SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names { sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names where SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Alternative_Reference_Sequence_Names sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2 = sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value1 == sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_alternative_reference_sequence_names_value = " ++ (show value) ++ " }" -- | AS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier = SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier { sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier where SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Genome_Assembly_Identifier sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2 = sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value1 == sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_genome_assembly_identifier_value = " ++ (show value) ++ " }" -- | DS tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Description = SAM_V1_6_Reference_Sequence_Dictionary_Description { sam_v1_6_reference_sequence_dictionary_description_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Description where SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Description sam_v1_6_reference_sequence_dictionary_description_value2 = sam_v1_6_reference_sequence_dictionary_description_value1 == sam_v1_6_reference_sequence_dictionary_description_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_description_value = " ++ (show value) ++ " }" -- | M5 tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum = SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum { sam_v1_6_reference_sequence_dictionary_md5_checksum_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum where SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == SAM_V1_6_Reference_Sequence_Dictionary_MD5_Checksum sam_v1_6_reference_sequence_dictionary_md5_checksum_value2 = sam_v1_6_reference_sequence_dictionary_md5_checksum_value1 == sam_v1_6_reference_sequence_dictionary_md5_checksum_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_md5_checksum_value = " ++ (show value) ++ " }" -- | SP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Species = SAM_V1_6_Reference_Sequence_Dictionary_Species { sam_v1_6_reference_sequence_dictionary_species_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Species where SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Species sam_v1_6_reference_sequence_dictionary_species_value2 = sam_v1_6_reference_sequence_dictionary_species_value1 == sam_v1_6_reference_sequence_dictionary_species_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_species_value = " ++ (show value) ++ " }" -- | TP tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology = SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology { sam_v1_6_reference_sequence_dictionary_molecule_topology_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology where SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == SAM_V1_6_Reference_Sequence_Dictionary_Molecule_Topology sam_v1_6_reference_sequence_dictionary_molecule_topology_value2 = sam_v1_6_reference_sequence_dictionary_molecule_topology_value1 == sam_v1_6_reference_sequence_dictionary_molecule_topology_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_molecule_topology_value = " ++ (show value) ++ " }" -- | UR tag for @"SAM_V1_6_Reference_Sequence_Dictionary"@. newtype SAM_V1_6_Reference_Sequence_Dictionary_URI = SAM_V1_6_Reference_Sequence_Dictionary_URI { sam_v1_6_reference_sequence_dictionary_uri_value :: ByteString } deriving (Generic,Typeable) instance Eq SAM_V1_6_Reference_Sequence_Dictionary_URI where SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_value1 == SAM_V1_6_Reference_Sequence_Dictionary_URI sam_v1_6_reference_sequence_dictionary_uri_value2 = sam_v1_6_reference_sequence_dictionary_uri_value1 == sam_v1_6_reference_sequence_dictionary_uri_value2 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 { " ++ "sam_v1_6_reference_sequence_dictionary_uri_value = " ++ (show value) ++ " }"