module Biobase.Infernal.Types where
import Control.Arrow
import Data.ByteString.Char8 as BS
newtype ClanAccession = ClanAccession {unClanAccession :: Int}
deriving (Eq,Ord,Read,Show)
newtype ClanIdentification = ClanIdentification {unClanIdentification :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype ModelAccession = ModelAccession {unModelAccession :: Int}
deriving (Eq,Ord,Read,Show)
newtype ModelIdentification = ModelIdentification {unModelIdentification :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype EmblAccession = EmblAccession {unEmblAccession :: (ByteString,Int,Int)}
deriving (Eq,Ord,Read,Show)
mkEmblAccession :: ByteString -> EmblAccession
mkEmblAccession s = EmblAccession (sid,start,stop) where
(sid,(Just (start,_),Just (stop,_))) = second ((BS.readInt *** (BS.readInt . BS.drop 1)) . BS.span (/='-') . BS.drop 1) . BS.span (/='/') $ s
newtype SpeciesAccession = SpeciesAccession {unSpeciesAccession :: Int}
deriving (Eq,Ord,Read,Show)
newtype SpeciesName = SpeciesName {unSpeciesName :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype StrictSeqData = StrictSeqData {unStrictSeqData :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype Classification = Classification {unClassification :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype Scaffold = Scaffold {unScaffold :: ByteString}
deriving (Eq,Ord,Read,Show)
newtype BitScore = BitScore {unBitScore :: Double}
deriving (Eq,Ord,Read,Show,Num)