Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
17
Task/FASTA-format/Haskell/fasta-format-1.hs
Normal file
17
Task/FASTA-format/Haskell/fasta-format-1.hs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import Data.List ( groupBy )
|
||||
|
||||
parseFasta :: FilePath -> IO ()
|
||||
parseFasta fileName = do
|
||||
file <- readFile fileName
|
||||
let pairedFasta = readFasta $ lines file
|
||||
mapM_ (\(name, code) -> putStrLn $ name ++ ": " ++ code) pairedFasta
|
||||
|
||||
readFasta :: [String] -> [(String, String)]
|
||||
readFasta = pair . map concat . groupBy (\x y -> notName x && notName y)
|
||||
where
|
||||
notName :: String -> Bool
|
||||
notName = (/=) '>' . head
|
||||
|
||||
pair :: [String] -> [(String, String)]
|
||||
pair [] = []
|
||||
pair (x : y : xs) = (drop 1 x, y) : pair xs
|
||||
18
Task/FASTA-format/Haskell/fasta-format-2.hs
Normal file
18
Task/FASTA-format/Haskell/fasta-format-2.hs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import Text.ParserCombinators.ReadP
|
||||
import Control.Applicative ( (<|>) )
|
||||
import Data.Char ( isAlpha, isAlphaNum )
|
||||
|
||||
parseFasta :: FilePath -> IO ()
|
||||
parseFasta fileName = do
|
||||
file <- readFile fileName
|
||||
let pairs = fst . last . readP_to_S readFasta $ file
|
||||
mapM_ (\(name, code) -> putStrLn $ name ++ ": " ++ code) pairs
|
||||
|
||||
|
||||
readFasta :: ReadP [(String, String)]
|
||||
readFasta = many pair <* eof
|
||||
where
|
||||
pair = (,) <$> name <*> code
|
||||
name = char '>' *> many (satisfy isAlphaNum <|> char '_') <* newline
|
||||
code = concat <$> many (many (satisfy isAlpha) <* newline)
|
||||
newline = char '\n'
|
||||
Loading…
Add table
Add a link
Reference in a new issue