fasta-0.10.4.1: src/Data/Fasta/Text/Lazy/Utility.hs
-- Utility Module
-- By Gregory W. Schwartz
{- | Collects all helpful random functions.
-}
module Data.Fasta.Text.Lazy.Utility ( getField
, compl
, revCompl
) where
-- Built in
import Data.Maybe
-- Cabal
import Control.Lens
import qualified Data.Text.Lazy as T
-- Local
import Data.Fasta.Text.Lazy.Types
import Data.Fasta.Utility
-- | Gets a 1 indexed field from the header of a fasta sequence using a certain
-- delimiter.
getField :: Int -> Char -> FastaSequence -> T.Text
getField field delim = fromMaybe (error "getField: Field out of bounds in fasta header")
. preview (ix $ field - 1)
. T.split (== delim)
. fastaHeader
-- | Gets the complement of the sequence.
compl :: FastaSequence -> FastaSequence
compl fs = fs { fastaSeq = T.map complRules . fastaSeq $ fs }
-- | Gets the reverse complement of the sequence.
revCompl :: FastaSequence -> FastaSequence
revCompl fs = fs { fastaSeq = T.reverse . T.map complRules . fastaSeq $ fs }