Retrieving the lines of the source sequence
, aa.fa FASTA. , .
import Bio.Sequence.Fasta (readFasta)
import Bio.Sequence.SeqData (seqdata)
import qualified Data.ByteString.Lazy.Char8 as LB
main = do
sequences <- readFasta "aa.fa"
let listOfSequences = map (LB.unpack . seqdata) sequences :: [String]
-- Just for show, we will print one sequence per line here
-- This will basically execute putStrLn for each sequence
mapM_ putStrLn listOfSequences
readFasta IO [Sequence Unknown]. , , .
, LB.unpack show , show (") String. LB.unpack , BioHaskell 0.5.3, SeqData ByteString.
, castToAmino castToNuc:
AA/Nucleotide
let aaSequences = map castToAmino sequences :: [Sequence Amino]
, (BioHaskell 0.5.3) . [Sequence Amino] [Sequence Nuc] BioHaskell.
FASTA
, aa.fa
>abc123
MGLIFARATNA...
Map String String ( Data.Map.Strict) FASTA. .
Maybe String. , , , , Map .
Data.Maybe , Data.Foldable.mapM_ .
import Bio.Sequence.Fasta (readFasta)
import Bio.Sequence.SeqData (Sequence, seqdata, seqheader)
import qualified Data.ByteString.Lazy.Char8 as LB
import Data.Foldable (mapM_)
import qualified Data.Map.Strict as Map
-- | Convert a Sequence to a String tuple (sequence label, sequence)
sequenceToMapTuple :: Sequence a -> (String, String)
sequenceToMapTuple s = (LB.unpack $ seqheader s, LB.unpack $ seqdata s)
main = do
sequences <- readFasta "aa.fa"
-- Build the sequence map (by header)
let sequenceMap = Map.fromList $ map sequenceToMapTuple sequences
-- Lookup the sequence for the "abc123" header
mapM_ print $ Map.lookup "abc123" sequenceMap
: @GabrielGonzalez Data.Foldable.mapM_ Data.Maybe.fromJust