BSD-3-Clause licensed by Pavel Yakovlev
Maintained by [email protected]
This version can be pinned in stack with:uniprot-kb-,1623

Module documentation for

Depends on 3 packages(full list with versions):


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


Changelog for uniprot-kb

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

  • Every record in UniProt-KB can be parsed.
  • Any capital english letter can be an amino acid.
  • Schema was changed a little.
  • Multiple fixes on specification bugs.
  • Evidence is not parsed any more as it’s breaks specification in lots of ways.

  • Empty FT description bugfix

  • Generic deriving for all types

  • Back compability lost for SQ section
  • No more DuplicateRecordFields, so it can be built by 7.x
  • Includes and Contains sections of DE tested

  • Small fixes in description fields read
  • Documentation fixes
  • Usage example in README

  • Any UniProt-KB file can be parsed