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 +2/−2
- src/Bio/Sequence/Phd.hs +17/−16
- src/Bio/Sequence/PhdData.hs +10/−23
- src/Bio/Sequence/PhdTag.hs +19/−0
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 ]