A well-typed UniProt file format parser.
To build Haddock documentation run:
$ stack haddock
You can use this simple code to parse any UniProt file:
import Bio.Uniprot
import Data.Attoparsec.Text (parseOnly)
import Data.Text (Text)
import qualified Data.Text.IO as TIO
import Text.Pretty.Simple (pPrint)
main :: IO ()
main = do
uniprot <- TIO.getContents
case parseOnly parseRecord uniprot of
Left err -> putStrLn "Error on parse"
Right obj -> pPrint obj
So you can parse any stdin Text
of UniProt by using parseRecord
function. The result will be presented by
a Record
datatype:
data Record = Record
{ id :: ID
, ac :: AC
, dt :: DT
, de :: DE
, gn :: [GN]
, os :: OS
, og :: Maybe OG
, oc :: OC
, ox :: Maybe OX
, oh :: [OH]
, refs :: [Reference]
, cc :: [CC]
, dr :: [DR]
, pe :: PE
, kw :: KW
, ft :: [FT]
, sq :: SQ
} deriving (Show, Eq, Ord)
You can run this to test the implementation:
stack runhaskell uniprot.hs < example/LOLA2_DROME.dat