| bio-0.4.6: A bioinformatics library | Source code | Contents | Index

Bio.Sequence.SeqData

Contents

Data structure
Accessor functions
Adding information to header
Converting to and from [Char]
Sequence utilities
Nucleotide functionality
Protein functionality
Display a nicely formated sequence.
Default type for sequences

Description
Data structures for manipulating (biological) sequences. Generally supports both nucleotide and protein sequences, some functions, like `revcompl`, only makes sense for nucleotides.
Synopsis

data Sequence t = Seq !SeqData !SeqData !(Maybe QualData)
type Offset = Int64
type SeqData = ByteString
type Qual = Word8
type QualData = ByteString
(!) :: Sequence a -> Offset -> Char
seqlength :: Sequence a -> Offset
seqlabel :: Sequence a -> SeqData
seqheader :: Sequence a -> SeqData
seqdata :: Sequence a -> SeqData
(?) :: Sequence a -> Offset -> Qual
hasqual :: Sequence a -> Bool
seqqual :: Sequence a -> QualData
appendHeader :: Sequence a -> String -> Sequence a
setHeader :: Sequence a -> String -> Sequence a
fromStr :: String -> SeqData
toStr :: SeqData -> String
defragSeq :: Sequence t -> Sequence t
seqmap :: ((Char, Qual) -> (Char, Qual)) -> Sequence t -> Sequence t
castSeq :: Sequence a -> Sequence b
compl :: Char -> Char
revcompl :: Sequence Nuc -> Sequence Nuc
revcompl' :: SeqData -> SeqData
data Nuc
castToNuc :: Sequence a -> Sequence Nuc

data Amino

= Ala
| Arg
| Asn
| Asp
| Cys
| Gln
| Glu
| Gly
| His
| Ile
| Leu
| Lys
| Met
| Phe
| Pro
| Ser
| Thr
| Tyr
| Trp
| Val
| STP
| Asx
| Glx
| Xle
| Xaa

translate :: Sequence Nuc -> Offset -> [Amino]
fromIUPAC :: SeqData -> [Amino]
toIUPAC :: [Amino] -> SeqData
castToAmino :: Sequence a -> Sequence Amino
putSeqLn :: Sequence a -> Int -> Int -> [(Int, Int)] -> IO ()
seqToStr :: Sequence a -> Int -> Int -> [(Int, Int)] -> [Char]
data Unknown

Data structure
A sequence is a header, sequence data itself, and optional quality data. Sequences are type-tagged to identify them as nucleotide, amino acids, or unknown type. All items are lazy bytestrings. The Offset type can be used for indexing.

data Sequence t | Source

A sequence consists of a header, the sequence data itself, and optional quality data. The type parameter is a phantom type to separate nucleotide and amino acid sequences
Constructors

Seq !SeqData !SeqData !(Maybe QualData) | header and actual sequence

Instances

Eq (Sequence t)
Show (Sequence a)

type Offset = Int64 | Source

An offset, index, or length of a `SeqData`

type SeqData = ByteString | Source

The basic data type used in `Sequence`s
Quality data is normally associated with nucleotide sequences

type Qual = Word8 | Source

Basic type for quality data. Range 0..255. Typical Phred output is in the range 6..50, with 20 as the line in the sand separating good from bad.

type QualData = ByteString | Source

Quality data is a `Qual` vector, currently implemented as a ByteString.
Accessor functions

(!) :: Sequence a -> Offset -> Char | Source

Read the character at the specified position in the sequence.

seqlength :: Sequence a -> Offset | Source

Return sequence length.

seqlabel :: Sequence a -> SeqData | Source

Return sequence label (first word of header)

seqheader :: Sequence a -> SeqData | Source

Return full header.

seqdata :: Sequence a -> SeqData | Source

Return the sequence data.

(?) :: Sequence a -> Offset -> Qual | Source

hasqual :: Sequence a -> Bool | Source

Check whether the sequence has associated quality data.

seqqual :: Sequence a -> QualData | Source

Return the quality data, or error if none exist. Use hasqual if in doubt.
Adding information to header

appendHeader :: Sequence a -> String -> Sequence a | Source

setHeader :: Sequence a -> String -> Sequence a | Source

Modify the header by appending text, or by replacing all but the sequence label (i.e. first word).
Converting to and from [Char]

fromStr :: String -> SeqData | Source

Convert a String to `SeqData`

toStr :: SeqData -> String | Source

Convert a `SeqData` to a String
Sequence utilities

defragSeq :: Sequence t -> Sequence t | Source

Returns a sequence with all internal storage freshly copied and with sequence and quality data present as a single chunk.

By freshly copying internal storage, `defragSeq` allows garbage collection of the original data source whence the sequence was read; otherwise, use of just a short sequence name can cause an entire sequence file buffer to be retained.

By compacting sequence data into a single chunk, `defragSeq` avoids linear-time traversal of sequence chunks during random access into sequence data.

seqmap :: ((Char, Qual) -> (Char, Qual)) -> Sequence t -> Sequence t | Source

map over sequences, treating them as a sequence of (char,word8) pairs. This will work on sequences without quality, as long as the function doesn't try to examine it. The current implementation is not very efficient.

castSeq :: Sequence a -> Sequence b | Source

Phantom type functionality, unchecked conversion between sequence types
Nucleotide functionality
Nucleotide sequences contain the alphabet [A,C,G,T]. IUPAC specifies an extended nucleotide alphabet with wildcards, but it is not supported at this point.

compl :: Char -> Char | Source

Complement a single character. I.e. identify the nucleotide it can hybridize with. Note that for multiple nucleotides, you usually want the reverse complement (see `revcompl` for that).

revcompl :: Sequence Nuc -> Sequence Nuc | Source

Calculate the reverse complement. This is only relevant for the nucleotide alphabet, and it leaves other characters unmodified.

revcompl' :: SeqData -> SeqData | Source

Calculate the reverse complent for SeqData only.

data Nuc | Source

For type tagging sequences (protein sequences use `Amino` below)

castToNuc :: Sequence a -> Sequence Nuc | Source

Protein functionality
Proteins are chains of amino acids, represented by the IUPAC alphabet.

data Amino | Source

Constructors

Ala |
Arg |
Asn |
Asp |
Cys |
Gln |
Glu |
Gly |
His |
Ile |
Leu |
Lys |
Met |
Phe |
Pro |
Ser |
Thr |
Tyr |
Trp |
Val |
STP |
Asx |
Glx |
Xle |
Xaa |

Instances

Eq Amino
Show Amino

translate :: Sequence Nuc -> Offset -> [Amino] | Source

Translate a nucleotide sequence into the corresponding protein sequence. This works rather blindly, with no attempt to identify ORFs or otherwise QA the result.

fromIUPAC :: SeqData -> [Amino] | Source

Convert a sequence in IUPAC format to a list of amino acids.

toIUPAC :: [Amino] -> SeqData | Source

Convert a list of amino acids to a sequence in IUPAC format.

castToAmino :: Sequence a -> Sequence Amino | Source

Display a nicely formated sequence.

putSeqLn :: Sequence a -> Int -> Int -> [(Int, Int)] -> IO () | Source

A simple function to display a sequence: we generate the sequence string and | call putStrLn

seqToStr :: Sequence a -> Int -> Int -> [(Int, Int)] -> [Char] | Source

Returns a properly formatted and probably highlighted string | representation of a sequence. Highlighting is done using ANSI-Escape | sequences.
Default type for sequences

data Unknown | Source

Produced by Haddock version 2.4.2