packages feed

biophd 0.0.3 → 0.0.4

raw patch · 4 files changed

+48/−41 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Bio.Sequence.PhdData: PhdTag :: String -> String -> [Offset] -> String -> String -> PhdTag
- Bio.Sequence.PhdData: data PhdTag
- Bio.Sequence.PhdData: date :: PhdTag -> String
- Bio.Sequence.PhdData: instance Eq PhdTag
- Bio.Sequence.PhdData: instance Show PhdTag
- Bio.Sequence.PhdData: source :: PhdTag -> String
- Bio.Sequence.PhdData: tagType :: PhdTag -> String
- Bio.Sequence.PhdData: unpaddedReadPosition :: PhdTag -> [Offset]
+ Bio.Sequence.Phd: comment :: Phd -> Comment
+ Bio.Sequence.Phd: dnaBlock :: Phd -> DNABlock
+ Bio.Sequence.Phd: phdTags :: Phd -> Maybe [PhdTag]
+ Bio.Sequence.PhdData: dnaBlock :: Phd -> DNABlock
+ Bio.Sequence.PhdData: phdTags :: Phd -> Maybe [PhdTag]
+ Bio.Sequence.PhdTag: PhdTag :: String -> String -> [Offset] -> String -> String -> PhdTag
+ Bio.Sequence.PhdTag: comment :: PhdTag -> String
+ Bio.Sequence.PhdTag: data PhdTag
+ Bio.Sequence.PhdTag: date :: PhdTag -> String
+ Bio.Sequence.PhdTag: instance Eq PhdTag
+ Bio.Sequence.PhdTag: instance Show PhdTag
+ Bio.Sequence.PhdTag: source :: PhdTag -> String
+ Bio.Sequence.PhdTag: tagType :: PhdTag -> String
+ Bio.Sequence.PhdTag: unpaddedReadPosition :: PhdTag -> [Offset]
- Bio.Sequence.Phd: Phd :: Comment -> DNABlock -> (Maybe [PhdTag]) -> Phd
+ Bio.Sequence.Phd: Phd :: Comment -> DNABlock -> Maybe [PhdTag] -> Phd
- Bio.Sequence.PhdData: Phd :: Comment -> DNABlock -> (Maybe [PhdTag]) -> Phd
+ Bio.Sequence.PhdData: Phd :: Comment -> DNABlock -> Maybe [PhdTag] -> Phd
- Bio.Sequence.PhdData: comment :: PhdTag -> String
+ Bio.Sequence.PhdData: comment :: Phd -> Comment

Files

biophd.cabal view
@@ -1,5 +1,5 @@ Name:                biophd-Version:             0.0.3+Version:             0.0.4 Synopsis:            Library for reading phd sequence files Description:         Library for reading phd sequence files Homepage:	     https://patch-tag.com/r/dfornika/biophd/home@@ -14,7 +14,7 @@  Library   Build-depends:     base >= 2 && < 5, biocore, bytestring, parsec, text, binary-  Exposed-modules:   Bio.Sequence.Phd, Bio.Sequence.PhdData+  Exposed-modules:   Bio.Sequence.Phd, Bio.Sequence.PhdData, Bio.Sequence.PhdTag   Hs-source-dirs:    src  source-Repository    head
src/Bio/Sequence/Phd.hs view
@@ -2,6 +2,7 @@  import Bio.Core.Sequence import Bio.Sequence.PhdData+import qualified Bio.Sequence.PhdTag as PT  import Text.ParserCombinators.Parsec hiding (label) @@ -21,7 +22,7 @@ readPhd :: FilePath -> IO Phd readPhd f = return . mkPhd =<< readFile f -readPhdTags :: FilePath -> IO (Maybe [PhdTag])+readPhdTags :: FilePath -> IO (Maybe [PT.PhdTag]) readPhdTags f = return . (mkPhdTags . lines) =<< readFile f  -- | Parse .phd contents from a handle@@ -72,7 +73,7 @@                               , qualities    = QualData { unQD = encode   q }                               , traceIndices = t } -mkPhdTags :: [String] -> Maybe [PhdTag]+mkPhdTags :: [String] -> Maybe [PT.PhdTag] mkPhdTags phdLines = case groupByTags phdLines of                        [] -> Nothing                        _ -> Just (map (fromJust . mkOnePhdTag) (groupByTags phdLines))@@ -86,19 +87,19 @@       grouping      = \x -> drop (fst (tag_spans!!x)) (take (snd (tag_spans!!x) + 1) xs)   in  map grouping (Data.Ix.range (0, (length tag_spans) -1))  -mkOnePhdTag :: [String] -> Maybe PhdTag+mkOnePhdTag :: [String] -> Maybe PT.PhdTag mkOnePhdTag td = case length td of                     0 -> Nothing-                   9 -> Just PhdTag { tagType = drop 6 (td!!1)-                                   , source  = drop 8 (td!!2)-                                   , unpaddedReadPosition = map (\x -> Offset {unOff = read x :: Int64}) (words (drop 19 (td!!3)))-                                   , date    = drop 6 (td!!4)-                                   , comment = if td!!6 == "BEGIN_TAG" then ""-                                               else td!!6 -                                   }-                   _ -> Just PhdTag { tagType = drop 6 (td!!1)-                                   , source  = drop 8 (td!!2)            -                                   , unpaddedReadPosition = map (\x -> Offset {unOff = read x :: Int64}) (words (drop 19 (td!!3)))          -                                   , date    = drop 6 (td!!4)                           -                                   , comment = ""-                                   }         +                   9 -> Just PT.PhdTag { PT.tagType = drop 6 (td!!1)+                                       , PT.source  = drop 8 (td!!2)+                                       , PT.unpaddedReadPosition = map (\x -> Offset {unOff = read x :: Int64}) (words (drop 19 (td!!3)))+                                       , PT.date    = drop 6 (td!!4)+                                       , PT.comment = if td!!6 == "BEGIN_TAG" then ""+                                                  else td!!6 +                                       }+                   _ -> Just PT.PhdTag { PT.tagType = drop 6 (td!!1)+                                       , PT.source  = drop 8 (td!!2)            +                                       , PT.unpaddedReadPosition = map (\x -> Offset {unOff = read x :: Int64}) (words (drop 19 (td!!3)))          +                                       , PT.date    = drop 6 (td!!4)                           +                                       , PT.comment = ""+                                       }          
src/Bio/Sequence/PhdData.hs view
@@ -1,12 +1,16 @@ module Bio.Sequence.PhdData where  import Bio.Core.Sequence+import qualified Bio.Sequence.PhdTag as PT import qualified Data.ByteString.Lazy as LB import qualified Data.ByteString.Lazy.Char8 as LBC  {-- A .phd file consists of a DNA block with base and quality      values, followed by one or more (optional) tag blocks. --}-data Phd = Phd Comment DNABlock (Maybe [PhdTag]) deriving (Show)+data Phd = Phd { comment  :: Comment +               , dnaBlock :: DNABlock +               , phdTags    :: Maybe [PT.PhdTag] +               } deriving (Show)  {-- These types are subject to change if it improves functionality,     but for now it's simplest to just call them String, Int etc.--}@@ -50,23 +54,6 @@ instance Show DNABlock where   show = LBC.unpack . toFasta -data PhdTag = PhdTag-    { tagType              :: String-    , source               :: String-    , unpaddedReadPosition :: [Offset]-    , date                 :: String-    , comment              :: String  -    } deriving (Eq)--instance Show PhdTag where-  show (PhdTag tt so urp da co) =-    ("\n" ++) $ unlines $ map (" " ++)-      [ "TYPE: "              ++ show tt-      , "SOURCE: "            ++ show so-      , "UNPADDED_READ_POS: " ++ show (map unOff urp)-      , "DATE: "              ++ show da-      , "COMMENT: "           ++ show co ]- instance BioSeq DNABlock where   seqlabel  db = SeqLabel $ LBC.pack $ label db   seqdata   db = bases db@@ -94,8 +81,8 @@                            , qualities    = QualData $ LBC.pack "0000000000"                            , traceIndices = [0,1,2,3,4,5,6,7,8,9,10] } -defaultPhdTag = PhdTag { tagType              = "polymorphism"-                       , source               = "polyphred"-                       , unpaddedReadPosition = [5, 5]-                       , date                 = "01/01/70 00:00:00"-                       , comment              = "" }+defaultPhdTag = PT.PhdTag { PT.tagType              = "polymorphism"+                          , PT.source               = "polyphred"+                          , PT.unpaddedReadPosition = [5, 5]+                          , PT.date                 = "01/01/70 00:00:00"+                          , PT.comment              = "" }
+ src/Bio/Sequence/PhdTag.hs view
@@ -0,0 +1,19 @@+module Bio.Sequence.PhdTag where ++import Bio.Core.Sequence (Offset, unOff)++data PhdTag = PhdTag+              { tagType              :: String+              , source               :: String+              , unpaddedReadPosition :: [Offset]+              , date                 :: String+              , comment              :: String  +              } deriving (Eq)++instance Show PhdTag where+  show (PhdTag tt so urp da co) = ("\n" ++) $ unlines $ map (" " ++)+                                  [ "TYPE: "              ++ show tt+                                  , "SOURCE: "            ++ show so+                                  , "UNPADDED_READ_POS: " ++ show (map unOff urp)+                                  , "DATE: "              ++ show da+                                  , "COMMENT: "           ++ show co ]