cobot-io 0.1.5.7 → 0.1.5.8
raw patch · 5 files changed
+171/−11 lines, 5 filesdep −QuickCheckPVP ok
version bump matches the API change (PVP)
Dependencies removed: QuickCheck
API changes (from Hackage documentation)
Files
- ChangeLog.md +5/−0
- cobot-io.cabal +4/−4
- src/Bio/GB/Parser.hs +10/−7
- test/GB/pAAV-GFP-Unknown_Accession.gb +145/−0
- test/GBParserSpec.hs +7/−0
ChangeLog.md view
@@ -1,6 +1,11 @@ # Changelog for cobot-io ## [Unreleased]+## [0.1.5.8] - 2026-10-29+- Fix Gb prase for unknown char in ACCESSION tag++## [0.1.5.7] - 2026-02-02+- Update dependencies for GHC 9.10. ## [0.1.5.6] - 2024-12-18 - Fix for gb-parser: spaces in name in LOCUS
cobot-io.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.36.0.+-- This file has been generated from package.yaml by hpack version 0.39.1. -- -- see: https://github.com/sol/hpack name: cobot-io-version: 0.1.5.7+version: 0.1.5.8 synopsis: Biological data file formats and IO description: Please see the README on GitHub at <https://github.com/biocad/cobot-io#readme> category: Bio@@ -32,6 +32,7 @@ test/GB/fromYanaWithLove.gb test/GB/pAAV-GFP-CellBioLab-dots.gb test/GB/pAAV-GFP-CellBioLab.gb+ test/GB/pAAV-GFP-Unknown_Accession.gb test/GB/pAAV_CMV_RPE65_PolyA_linkers.gb test/GB/pIntA-TRBV.gb test/GB/spaces_in_locus.gb@@ -241,8 +242,7 @@ TypeFamilies ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends:- QuickCheck >=2.9.2 && <2.15- , attoparsec >=0.10 && <0.15+ attoparsec >=0.10 && <0.15 , base >=4.14 && <5 , binary >=0.8.3.0 && <1.0 , bytestring >=0.10.8.1 && <0.13
src/Bio/GB/Parser.hs view
@@ -10,14 +10,15 @@ Source (..), Version (..)) import Bio.Sequence (Border (..), MarkedSequence, Range (..), RangeBorder (..), markedSequence, shiftRange)+import Control.Monad (join, void) import Control.Monad.Combinators (many, manyTill, optional, some, (<|>)) import Data.Char (isAlphaNum, isSpace, isUpper) import Data.Functor (($>)) import Data.Text (Text, intercalate, pack, splitOn, unpack) import qualified Data.Text as T import Text.Megaparsec (notFollowedBy, option, satisfy, sepBy1, takeWhile1P,- takeWhileP, try, (<?>))-import Text.Megaparsec.Char (char, digitChar, eol, letterChar, string)+ takeWhileP, try, (<?>), anySingle)+import Text.Megaparsec.Char (char, digitChar, eol, letterChar, string, hspace) import Text.Megaparsec.Char.Lexer (decimal) -- | Parser of .gb file.@@ -37,7 +38,7 @@ locus' <- locusP <?> "Locus parser" definitionM <- optional definitionP <?> "Definition parser"- accessionM <- optional accessionP <?> "Accession parser"+ accessionM <- join <$> optional accessionP <?> "Accession parser" versionM <- optional versionP <?> "Version parser" keywordsM <- optional keywordsP <?> "Keywords parser" sourceM <- optional sourceP <?> "Source parser"@@ -67,10 +68,12 @@ definitionP :: Parser Text definitionP = string "DEFINITION" *> space *> (try emptyP <|> someLinesP) -accessionP :: Parser Text-accessionP = string "ACCESSION" *> space *> (try emptyP <|> (pack- <$> some (try alphaNumChar <|> char '_')- <* eolSpaceP))+accessionP :: Parser (Maybe Text)+accessionP = string "ACCESSION" *> hspace *> (try (Just <$> valueP) <|> (Nothing <$ skipLineP))+ where+ valueP = try emptyP+ <|> (pack <$> some (try alphaNumChar <|> char '_' <|> char '<' <|> char '>') <* eolSpaceP)+ skipLineP = void (manyTill anySingle eol) versionP :: Parser Version versionP = string "VERSION" *> space
+ test/GB/pAAV-GFP-Unknown_Accession.gb view
@@ -0,0 +1,145 @@+LOCUS pAAV-GFP-CellBio 5374 bp ds-DNA circular SYN 15-AUG-2016+DEFINITION Saccharomyces cerevisiae TCP1-beta gene, partial cds, and Axl2p+ (AXL2) and Rev7p (REV7) genes, complete cds.+ACCESSION <unknown+VERSION U49845.1 GI:1293613+KEYWORDS .+SOURCE synthetic DNA construct+ ORGANISM synthetic DNA construct+ synthetic DNA construct hmmm interesting+REFERENCE 1 (bases 1 to 5374)+ AUTHORS avprok+ TITLE Direct Submission+ JOURNAL Exported Monday, August 15, 2016 from SnapGene 3.1.4 to Vector+ NTI(R) format+ http://www.snapgene.com+REFERENCE 2 (bases 1 to 5028)+ AUTHORS Roemer,T., Madden,K., Chang,J. and Snyder,M.+ TITLE Selection of axial growth sites in yeast requires Axl2p, a novel+ plasma membrane glycoprotein+ JOURNAL Genes Dev. 10 (7), 777-793 (1996)+ PUBMED 8846915+REFERENCE 3 (bases 1 to 5028)+ AUTHORS Roemer,T.+ TITLE Direct Submission+ JOURNAL Submitted (22-FEB-1996) Terry Roemer, Biology, Yale University, New+ Haven, CT, USA+COMMENT VNTDATE|745891200|+COMMENT VNTDBDATE|778204800|+COMMENT VNTNAME|pAAV-GFP-CellBioLab|+COMMENT VNTAUTHORNAME|avprok|+FEATURES Location/Qualifiers+ misc_feature 1..130+ /label=Right ITR+ enhancer 206..509+ /label=CMV enhancer+ /note="human cytomegalovirus immediate early enhancer"+ promoter 510..712+ /label=CMV promoter+ /note="human cytomegalovirus (CMV) immediate early+ promoter"+ misc_feature 805..1297+ /label=Human beta-globin Intron+ CDS 1320..2036+ /codon_start=1+ /product="enhanced GFP"+ /label=EGFP+ /note="mammalian codon-optimized"+ repeat_region complement(2637..2777)+ /label=Left ITR+ /note="inverted terminal repeat of adeno-associated virus+ serotype 2+ oooooo"+ /prop=1+ORIGIN+ 1 cctgcaggca gctgcgcgct cgctcgctca ctgaggccgc ccgggcgtcg ggcgaccttt+ 61 ggtcgcccgg cctcagtgag cgagcgagcg cgcagagagg gagtggccaa ctccatcact+ 121 aggggttcct gcggccgcac gcgtctagtt attaatagta atcaattacg gggtcattag+ 181 ttcatagccc atatatggag ttccgcgtta cataacttac ggtaaatggc ccgcctggct+ 241 gaccgcccaa cgacccccgc ccattgacgt caataatgac gtatgttccc atagtaacgt+ 301 caatagggac tttccattga cgtcaatggg tggagtattt acggtaaact gcccacttgg+ 361 cagtacatca agtgtatcat atgccaagta cgccccctat tgacgtcaat gacggtaaat+ 421 ggcccgcctg gcattatgcc cagtacatga ccttatggga ctttcctact tggcagtaca+ 481 tctacgtatt agtcatcgct attaccatgg tgatgcggtt ttggcagtac atcaatgggc+ 541 gtggatagcg gtttgactca cggggatttc caagtctcca ccccattgac gtcaatggga+ 601 gtttgttttg caccaaaatc aacgggactt tccaaaatgt cgtaacaact ccgccccatt+ 661 gacgcaaatg ggcggtaggc gtgtacggtg ggaggtctat ataagcagag ctcgtttagt+ 721 gaaccgtcag atcgcctgga gacgccatcc acgctgtttt gacctccata gaagacaccg+ 781 ggaccgatcc agcctccgcg gattcgaatc ccggccggga acggtgcatt ggaacgcgga+ 841 ttccccgtgc caagagtgac gtaagtaccg cctatagagt ctataggccc acaaaaaatg+ 901 ctttcttctt ttaatatact tttttgttta tcttatttct aatactttcc ctaatctctt+ 961 tctttcaggg caataatgat acaatgtatc atgcctcttt gcaccattct aaagaataac+ 1021 agtgataatt tctgggttaa ggcaatagca atatttctgc atataaatat ttctgcatat+ 1081 aaattgtaac tgatgtaaga ggtttcatat tgctaatagc agctacaatc cagctaccat+ 1141 tctgctttta ttttatggtt gggataaggc tggattattc tgagtccaag ctaggccctt+ 1201 ttgctaatca tgttcatacc tcttatcttc ctcccacagc tcctgggcaa cgtgctggtc+ 1261 tgtgtgctgg cccatcactt tggcaaagaa ttgggattcg aacatcgatt gaattctgaa+ 1321 tggtgagcaa gggcgaggag ctgttcaccg gggtggtgcc catcctggtc gagctggacg+ 1381 gcgacgtaaa cggccacaag ttcagcgtgt ccggcgaggg cgagggcgat gccacctacg+ 1441 gcaagctgac cctgaagttc atctgcacca ccggcaagct gcccgtgccc tggcccaccc+ 1501 tcgtgaccac cctgacctac ggcgtgcagt gcttcagccg ctaccccgac cacatgaagc+ 1561 agcacgactt cttcaagtcc gccatgcccg aaggctacgt ccaggagcgc accatcttct+ 1621 tcaaggacga cggcaactac aagacccgcg ccgaggtgaa gttcgagggc gacaccctgg+ 1681 tgaaccgcat cgagctgaag ggcatcgact tcaaggagga cggcaacatc ctggggcaca+ 1741 agctggagta caactacaac agccacaacg tctatatcat ggccgacaag cagaagaacg+ 1801 gcatcaaggt gaacttcaag atccgccaca acatcgagga cggcagcgtg cagctcgccg+ 1861 accactacca gcagaacacc cccatcggcg acggccccgt gctgctgccc gacaaccact+ 1921 acctgagcac ccagtccgcc ctgagcaaag accccaacga gaagcgcgat cacatggtcc+ 1981 tgctggagtt cgtgaccgcc gccgggatca ctctcggcat ggacgagctg tacaagtact+ 2041 cagatctcga gctcaagtag ggatcctcta gagtcgacct gcagaagctt gcctcgagca+ 2101 gcgctgctcg agagatctac gggtggcatc cctgtgaccc ctccccagtg cctctcctgg+ 2161 ccctggaagt tgccactcca gtgcccacca gccttgtcct aataaaatta agttgcatca+ 2221 ttttgtctga ctaggtgtcc ttctataata ttatggggtg gaggggggtg gtatggagca+ 2281 aggggcaagt tgggaagaca acctgtaggg cctgcggggt ctattgggaa ccaagctgga+ 2341 gtgcagtggc acaatcttgg ctcactgcaa tctccgcctc ctgggttcaa gcgattctcc+ 2401 tgcctcagcc tcccgagttg ttgggattcc aggcatgcat gaccaggctc agctaatttt+ 2461 tgtttttttg gtagagacgg ggtttcacca tattggccag gctggtctcc aactcctaat+ 2521 ctcaggtgat ctacccacct tggcctccca aattgctggg attacaggcg tgaaccactg+ 2581 ctcccttccc tgtccttctg attttgtagg taaccacgtg cggaccgagc ggccgcagga+ 2641 acccctagtg atggagttgg ccactccctc tctgcgcgct cgctcgctca ctgaggccgg+ 2701 gcgaccaaag gtcgcccgac gcccgggctt tgcccgggcg gcctcagtga gcgagcgagc+ 2761 gcgcagctgc ctgcaggggc gcctgatgcg gtattttctc cttacgcatc tgtgcggtat+ 2821 ttcacaccgc atacgtcaaa gcaaccatag tacgcgccct gtagcggcgc attaagcgcg+ 2881 gcgggtgtgg tggttacgcg cagcgtgacc gctacacttg ccagcgccct agcgcccgct+ 2941 cctttcgctt tcttcccttc ctttctcgcc acgttcgccg gctttccccg tcaagctcta+ 3001 aatcgggggc tccctttagg gttccgattt agtgctttac ggcacctcga ccccaaaaaa+ 3061 cttgatttgg gtgatggttc acgtagtggg ccatcgccct gatagacggt ttttcgccct+ 3121 ttgacgttgg agtccacgtt ctttaatagt ggactcttgt tccaaactgg aacaacactc+ 3181 aaccctatct cgggctattc ttttgattta taagggattt tgccgatttc ggcctattgg+ 3241 ttaaaaaatg agctgattta acaaaaattt aacgcgaatt ttaacaaaat attaacgttt+ 3301 acaattttat ggtgcactct cagtacaatc tgctctgatg ccgcatagtt aagccagccc+ 3361 cgacacccgc caacacccgc tgacgcgccc tgacgggctt gtctgctccc ggcatccgct+ 3421 tacagacaag ctgtgaccgt ctccgggagc tgcatgtgtc agaggttttc accgtcatca+ 3481 ccgaaacgcg cgagacgaaa gggcctcgtg atacgcctat ttttataggt taatgtcatg+ 3541 ataataatgg tttcttagac gtcaggtggc acttttcggg gaaatgtgcg cggaacccct+ 3601 atttgtttat ttttctaaat acattcaaat atgtatccgc tcatgagaca ataaccctga+ 3661 taaatgcttc aataatattg aaaaaggaag agtatgagta ttcaacattt ccgtgtcgcc+ 3721 cttattccct tttttgcggc attttgcctt cctgtttttg ctcacccaga aacgctggtg+ 3781 aaagtaaaag atgctgaaga tcagttgggt gcacgagtgg gttacatcga actggatctc+ 3841 aacagcggta agatccttga gagttttcgc cccgaagaac gttttccaat gatgagcact+ 3901 tttaaagttc tgctatgtgg cgcggtatta tcccgtattg acgccgggca agagcaactc+ 3961 ggtcgccgca tacactattc tcagaatgac ttggttgagt actcaccagt cacagaaaag+ 4021 catcttacgg atggcatgac agtaagagaa ttatgcagtg ctgccataac catgagtgat+ 4081 aacactgcgg ccaacttact tctgacaacg atcggaggac cgaaggagct aaccgctttt+ 4141 ttgcacaaca tgggggatca tgtaactcgc cttgatcgtt gggaaccgga gctgaatgaa+ 4201 gccataccaa acgacgagcg tgacaccacg atgcctgtag caatggcaac aacgttgcgc+ 4261 aaactattaa ctggcgaact acttactcta gcttcccggc aacaattaat agactggatg+ 4321 gaggcggata aagttgcagg accacttctg cgctcggccc ttccggctgg ctggtttatt+ 4381 gctgataaat ctggagccgg tgagcgtggg tctcgcggta tcattgcagc actggggcca+ 4441 gatggtaagc cctcccgtat cgtagttatc tacacgacgg ggagtcaggc aactatggat+ 4501 gaacgaaata gacagatcgc tgagataggt gcctcactga ttaagcattg gtaactgtca+ 4561 gaccaagttt actcatatat actttagatt gatttaaaac ttcattttta atttaaaagg+ 4621 atctaggtga agatcctttt tgataatctc atgaccaaaa tcccttaacg tgagttttcg+ 4681 ttccactgag cgtcagaccc cgtagaaaag atcaaaggat cttcttgaga tccttttttt+ 4741 ctgcgcgtaa tctgctgctt gcaaacaaaa aaaccaccgc taccagcggt ggtttgtttg+ 4801 ccggatcaag agctaccaac tctttttccg aaggtaactg gcttcagcag agcgcagata+ 4861 ccaaatactg tccttctagt gtagccgtag ttaggccacc acttcaagaa ctctgtagca+ 4921 ccgcctacat acctcgctct gctaatcctg ttaccagtgg ctgctgccag tggcgataag+ 4981 tcgtgtctta ccgggttgga ctcaagacga tagttaccgg ataaggcgca gcggtcgggc+ 5041 tgaacggggg gttcgtgcac acagcccagc ttggagcgaa cgacctacac cgaactgaga+ 5101 tacctacagc gtgagctatg agaaagcgcc acgcttcccg aagggagaaa ggcggacagg+ 5161 tatccggtaa gcggcagggt cggaacagga gagcgcacga gggagcttcc agggggaaac+ 5221 gcctggtatc tttatagtcc tgtcgggttt cgccacctct gacttgagcg tcgatttttg+ 5281 tgatgctcgt caggggggcg gagcctatgg aaaaacgcca gcaacgcggc ctttttacgg+ 5341 ttcctggcct tttgctggcc ttttgctcac atgt+//
test/GBParserSpec.hs view
@@ -21,6 +21,13 @@ unknownFieldsSpecP "test/GB/pIntA-TRBV.gb" baseCountWithSophisticatedRangesAndMultilineFeatures "test/GB/fromYanaWithLove.gb" spacesInLocusName "test/GB/spaces_in_locus.gb"+ unknownAccessionSpecP "test/GB/pAAV-GFP-Unknown_Accession.gb"++unknownAccessionSpecP :: FilePath -> Spec+unknownAccessionSpecP path = describe "unknownAccession" $ do+ it "correctly parses meta information" $ do+ mt <- meta <$> fromFile path+ accession mt `shouldBe` (Just "<unknown") rangeTests :: Spec rangeTests = describe "Range parser" $ do