BiobaseInfernal 0.5.2.0 → 0.5.3.0
raw patch · 4 files changed
+67/−1 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Biobase.Infernal: Clan :: ByteString -> ByteString -> [ByteString] -> [ByteString] -> Clan
+ Biobase.Infernal: accession :: Clan -> ByteString
+ Biobase.Infernal: cFromFile :: FilePath -> IO [Clan]
+ Biobase.Infernal: data Clan
+ Biobase.Infernal: identifier :: Clan -> ByteString
+ Biobase.Infernal: members :: Clan -> [ByteString]
+ Biobase.Infernal: strings :: Clan -> [ByteString]
+ Biobase.Infernal: tFromFile :: FilePath -> IO (Map ByteString Species, Map Int Species)
+ Biobase.Infernal.Clan: Clan :: ByteString -> ByteString -> [ByteString] -> [ByteString] -> Clan
+ Biobase.Infernal.Clan: accession :: Clan -> ByteString
+ Biobase.Infernal.Clan: data Clan
+ Biobase.Infernal.Clan: identifier :: Clan -> ByteString
+ Biobase.Infernal.Clan: instance Eq Clan
+ Biobase.Infernal.Clan: instance Read Clan
+ Biobase.Infernal.Clan: instance Show Clan
+ Biobase.Infernal.Clan: members :: Clan -> [ByteString]
+ Biobase.Infernal.Clan: strings :: Clan -> [ByteString]
+ Biobase.Infernal.Clan.Import: fromFile :: FilePath -> IO [Clan]
+ Biobase.Infernal.Clan.Import: mkClan :: [ByteString] -> Clan
Files
- Biobase/Infernal.hs +7/−0
- Biobase/Infernal/Clan.hs +25/−0
- Biobase/Infernal/Clan/Import.hs +32/−0
- BiobaseInfernal.cabal +3/−1
Biobase/Infernal.hs view
@@ -11,6 +11,9 @@ , vhEneeByteString , vhEneeByteStrings , Species(..)+ , tFromFile+ , Clan(..)+ , cFromFile ) where import Data.ByteString as BS@@ -23,6 +26,8 @@ import Biobase.Infernal.VerboseHit.Export as VH import Biobase.Infernal.Taxonomy import Biobase.Infernal.Taxonomy.Import as T+import Biobase.Infernal.Clan+import Biobase.Infernal.Clan.Import as C thFromFile = TH.fromFile @@ -33,3 +38,5 @@ vhEneeByteStrings = VH.eneeByteStrings tFromFile = T.fromFile++cFromFile = C.fromFile
+ Biobase/Infernal/Clan.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE OverloadedStrings #-}++-- | Rfam clans are a set of biologically related Rfam families. This module+-- provides simple abstraction methods and loaders.+--+-- TODO This has to go into biobase and needs to be made nice-looking.+--+-- TODO load and parse with enumerator++module Biobase.Infernal.Clan where++import qualified Data.ByteString.Char8 as BS++++-- | Simple RfamClan data wrapper. Could Easily be just a list of bytestrings,+-- which it is using strings++data Clan = Clan+ { accession :: BS.ByteString+ , identifier :: BS.ByteString+ , members :: [BS.ByteString]+ , strings :: [BS.ByteString]+ } deriving (Read,Show,Eq)+
+ Biobase/Infernal/Clan/Import.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE OverloadedStrings #-}++-- | Importing clan data is probably never time-critical as the total file size+-- is extremely small. Should this ever change, swap to iteratee. The file is+-- read /strictly/.++module Biobase.Infernal.Clan.Import where++import qualified Data.ByteString.Char8 as BS+import Data.List++import Biobase.Infernal.Clan++++-- | Import the complete data strictly.++fromFile :: FilePath -> IO [Clan]+fromFile fp = do+ (map mkClan . groupBy (\x y -> "AC"/=(head . BS.words $y)) . BS.lines) `fmap` BS.readFile fp++-- | Given a list of bytestrings, create one Clan.+--+-- TODO return Maybe, make crash-safe++mkClan :: [BS.ByteString] -> Clan+mkClan xs = Clan+ { accession = (!!1) . BS.words . head . filter ((=="AC") . BS.take 2) $ xs+ , identifier = (!!1) . BS.words . head . filter ((=="ID") . BS.take 2) $ xs+ , members = map BS.init . map (!!1) . filter ((=="MB") . (!!0)) . map BS.words $ xs+ , strings = xs+ }
BiobaseInfernal.cabal view
@@ -1,5 +1,5 @@ name: BiobaseInfernal-version: 0.5.2.0+version: 0.5.3.0 author: Christian Hoener zu Siederdissen maintainer: choener@tbi.univie.ac.at homepage: http://www.tbi.univie.ac.at/~choener/@@ -40,6 +40,8 @@ exposed-modules: Biobase.Infernal+ Biobase.Infernal.Clan+ Biobase.Infernal.Clan.Import Biobase.Infernal.TabularHit Biobase.Infernal.TabularHit.Import Biobase.Infernal.Taxonomy