uniprot-kb: UniProt-KB format parser

[ bio, bsd3, library ] [ Propose Tags ]

Specification implementation of https://web.expasy.org/docs/userman.html

[Skip to Readme]
Change log ChangeLog.md
Dependencies attoparsec (>=0.10 && <0.14), base (>=4.7 && <5), text (>=0.2 && <1.3) [details]
License BSD-3-Clause
Copyright Pavel Yakovlev
Author Pavel Yakovlev
Maintainer pavel@yakovlev.me
Revised Revision 3 made by zmactep at Fri Jan 18 13:29:44 UTC 2019
Category Bio
Home page https://github.com/biocad/uniprot-kb#readme
Bug tracker https://github.com/biocad/uniprot-kb/issues
Source repo head: git clone https://github.com/biocad/uniprot-kb
Uploaded by zmactep at Thu Apr 26 12:53:39 UTC 2018
Distributions LTSHaskell:, NixOS:, Stackage:
Downloads 422 total (92 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2018-04-29 [all 1 reports]




Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Readme for uniprot-kb-

[back to package description]


Travis hackage hackage-deps

A well-typed UniProt file format parser.


To build Haddock documentation run:

$ stack haddock

Usage example

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