packages feed

BiobaseBlast 0.2.0.0 → 0.2.1.0

raw patch · 6 files changed

+205/−20 lines, 6 filesdep +text

Dependencies added: text

Files

Biobase/BLAST/Import.hs view
@@ -3,7 +3,11 @@  -- | Parses NCBI BLAST+ tabular output -module Biobase.BLAST.Import where+module Biobase.BLAST.Import (blastFromFile,+                             parseTabularBlasts,+                             parseTabularHTTPBlasts,+                             blastHTTPFromFile+                            ) where  import Prelude hiding (takeWhile) import Data.Attoparsec.ByteString.Char8 hiding (isSpace)@@ -28,6 +32,15 @@      then parseTabularBlasts <$> B.readFile filePath      else fail "# tabular blast file \"%s\" does not exist\n" filePath +  -- | reads and parses tabular HTTP Blast result from provided filePath+blastHTTPFromFile :: String -> IO [BlastTabularResult]+blastHTTPFromFile filePath = do+  printf "# reading tabular blast input from file %s\n" filePath+  blastFileExists <- doesFileExist filePath+  if blastFileExists+      then parseTabularHTTPBlasts <$> B.readFile filePath+      else fail "# tabular blast file \"%s\" does not exist\n" filePath+ -- | Read a lazy bytestring and stream out a lsit of @BlastTabularResult@'s. -- In case, there is a parse error "late" in the file, we might have -- already streamed out some (or many!) of these results.@@ -40,25 +53,29 @@             | B.null remainingInput  -> [btr]             | otherwise              -> btr : go remainingInput +parseTabularHTTPBlasts :: B.ByteString -> [BlastTabularResult]+parseTabularHTTPBlasts = go+  where go xs = case L.parse genParseTabularHTTPBlast xs of+          L.Fail remainingInput ctxts err  -> error $ "parseTabularHTTPBlasts failed! " ++ err ++ " ctxt: " ++ show ctxts ++ " head of remaining input: " ++ B.unpack (B.take 1000 remainingInput)+          L.Done remainingInput btr+            | B.null remainingInput  -> [btr]+            | otherwise              -> btr : go remainingInput+ genParseBlastProgram :: Parser BlastProgram genParseBlastProgram = do   choice [string "# BLAST",string "# blast"]-  (toLower <$> anyChar) >>= return . \case +  (toLower <$> anyChar) >>= return . \case     'x' -> BlastX     'p' -> BlastP     'n' -> BlastN  genParseTabularBlast :: Parser BlastTabularResult genParseTabularBlast = do-  --choice [string "# BLAST",string "# blast"]-  --_blastProgram <- choice [string "p",string "P",string "x",string "X"] <?> "Program"   _blastProgram <- genParseBlastProgram <?> "Program"   many1 (notChar '\n')   endOfLine   string "# Query: " <?> "Query"-  --_blastQueryId <- many1 (notChar ' ') <* skipWhile (not (string "\n")) <?> "QueryId"   _blastQueryId <- takeWhile (not . isSpace) <* manyTill anyChar endOfLine <?> "QueryId"-  --_blastQueryName <- many' (notChar '\n')  <?> "QueryName"   string "# Database: " <?> "Database"   _blastDatabase <- many1 (notChar '\n') <?> "Db"   string "\n# " <?> "header linebreak"@@ -67,8 +84,31 @@   _blastHitNumber <- decimal  <?> "Hit number"   string " hits found\n" <?> "hits found"   _tabularHit <- count  _blastHitNumber (try genParseBlastTabularHit)  <?> "Tabular hit"+  skipMany endOfLine   return $ BlastTabularResult _blastProgram (toLB _blastQueryId) (B.pack _blastDatabase) _blastHitNumber (V.fromList _tabularHit) +genParseTabularHTTPBlast :: Parser BlastTabularResult+genParseTabularHTTPBlast = do+  _blastProgram <- genParseBlastProgram <?> "Program"+  --many1 (notChar '\n')+  endOfLine+  string "# Iteration: " <?> "Iteration" -----+  _ <- takeWhile (not . isSpace) <* manyTill anyChar endOfLine <?> "IterationNumber" -----+  string "# Query: " <?> "Query"+  _blastQueryId <- takeWhile (not . isSpace) <* manyTill anyChar endOfLine <?> "QueryId"+  string "# RID: " <?> "RID" -----+  _ <- takeWhile (not . isSpace) <* manyTill anyChar endOfLine <?> "RID" -----+  string "# Database: " <?> "Database"+  _blastDatabase <- many1 (notChar '\n') <?> "Db"+  string "\n# " <?> "header linebreak"+  --fields line+  skipMany (try genParseFieldLine) <?> "Fields"+  _blastHitNumber <- decimal  <?> "Hit number"+  string " hits found\n" <?> "hits found"+  _tabularHit <- count  _blastHitNumber (try genParseBlastHTTPTabularHit)  <?> "Tabular hit"+  skipMany endOfLine+  return $ BlastTabularResult _blastProgram (toLB _blastQueryId) (B.pack _blastDatabase) _blastHitNumber (V.fromList _tabularHit)+ genParseFieldLine :: Parser () genParseFieldLine = do   string "Fields:"@@ -78,9 +118,6 @@  genParseBlastTabularHit :: Parser BlastTabularHit genParseBlastTabularHit = do-  --start <- peekChar'-  --when (start == '#') (fail "irgendwas")-  --_queryId <- takeWhile (\c ->  c /= '#' || c /= '\t')  <?> "hit qid"   _queryId <- takeWhile1 ((/=9) . ord) <?> "hit qid"   char '\t'   _subjectId <- takeWhile1 ((/=9) . ord) <?> "hit sid"@@ -112,7 +149,40 @@   _subjectSeq <- takeWhile1 ((/=10) . ord) <?> "hit subSeq" -- 10 == '\n'   char '\n'   return $ BlastTabularHit (B.fromStrict _queryId) (B.fromStrict _subjectId) _seqIdentity _alignmentLength _misMatches _gapOpenScore _queryStart _queryEnd _hitSeqStart _hitSeqEnd _eValue _bitScore _subjectFrame (B.fromStrict _querySeq) (B.fromStrict _subjectSeq)-  ++-- specific for Tabular Blast from NCBI HTTP requests+genParseBlastHTTPTabularHit :: Parser BlastTabularHit+genParseBlastHTTPTabularHit = do+    _queryId <- takeWhile1 ((/=9) . ord) <?> "hit qid"+    char '\t'+    _subjectId <- takeWhile1 ((/=9) . ord) <?> "hit sid"+    char '\t'+    _ <- takeWhile1 ((/=9) . ord) <?> "redundant id1"+    char '\t'+    _ <- takeWhile1 ((/=9) . ord) <?> "redundant id2"+    char '\t'+    _seqIdentity <- double <?> "hit seqid"+    char '\t'+    _alignmentLength <- decimal  <?> "hit sid"+    char '\t'+    _misMatches <- decimal <?> "hit mmatch"+    char '\t'+    _gapOpenScore <- decimal <?> "hit gopen"+    char '\t'+    _queryStart <- decimal <?> "hit qstart"+    char '\t'+    _queryEnd <- decimal  <?> "hit qend"+    char '\t'+    _hitSeqStart <- decimal  <?> "hit sstart"+    char '\t'+    _hitSeqEnd <- decimal <?> "hit send"+    char '\t'+    _eValue <- double <?> "hit eval"+    char '\t'+    _bitScore <- double <?> "hit bs"+    char '\n'+    return $ BlastTabularHit (B.fromStrict _queryId) (B.fromStrict _subjectId) _seqIdentity _alignmentLength _misMatches _gapOpenScore _queryStart _queryEnd _hitSeqStart _hitSeqEnd _eValue _bitScore 0 B.empty B.empty+ --IUPAC amino acid with gap --aminoacidLetters :: Char -> Bool aminoacidLetters = inClass "ARNDCQEGHILMFPSTWYVBZX-"
BiobaseBlast.cabal view
@@ -1,5 +1,5 @@ name:           BiobaseBlast-version:        0.2.0.0+version:        0.2.1.0 author:         Christian Hoener zu Siederdissen, Florian Eggenhofer maintainer:     choener@bioinf.uni-leipzig.de homepage:       https://github.com/choener/BiobaseBlast@@ -32,8 +32,8 @@ extra-source-files:   changelog.md   README.md--+  tests/succeed/*.golden+  tests/succeed/*.test  library   build-depends: base             >= 4.7      && < 5.0@@ -95,6 +95,7 @@                , tasty-quickcheck           >= 0.8                , tasty-silver               >= 3.1.9                , tasty-th                   >= 0.1+               , text                --                , BiobaseBlast @@ -106,6 +107,5 @@  source-repository this   type:     git-  location: https://github.com/choener/BiobaseBlast/tree/0.2.0.0-  tag:      0.2.0.0-+  location: https://github.com/choener/BiobaseBlast/tree/0.2.1.0+  tag:      0.2.1.0
tests/properties.hs view
@@ -1,13 +1,67 @@ --- |--- -- TODO some unit tests to check if assumed-known values are in the right -- table cells  module Main where -+import Test.Tasty+import Test.Tasty.Silver ( findByExtension)+import Test.Tasty.Silver.Advanced (goldenTest1, GDiff(..), GShow(..))+import Biobase.BLAST.Import+import System.FilePath ( replaceExtension )+import qualified Data.Text as T+import qualified Data.Text.IO as TIO+import Control.Monad  main :: IO ()-main = return ()+main = defaultMain =<< allTests +allTests :: IO TestTree+allTests = do+  tabularSucceedTest <- succeedTest+  tabularHTTPSucceedTest <- succeedHTTPTest+  return $ testGroup "tests"+    [tabularSucceedTest, tabularHTTPSucceedTest]++succeedTest :: IO TestTree+succeedTest = do+  files <- findByExtension [".test"] "./tests/succeed"  +  return $ testGroup "succeed" $ map tastyTest files++tastyTest :: FilePath -> TestTree+tastyTest testFile =+  let+    goldenFilePath :: FilePath+    goldenFilePath = replaceExtension testFile ".golden"+    in goldenTest1 "Tabular HTTP blast" (liftM Just (TIO.readFile goldenFilePath)) (testBlast testFile) compareText (ShowText) print+    --in goldenVsAction "Tabularblast" goldenFile (blastFromFile testFile) (\a -> T.pack $ concatMap show a)++testBlast :: FilePath -> IO T.Text+testBlast testFile = do+  result <- blastFromFile testFile+  let textresult = T.pack $ ((concatMap show result)++ "\n")+  return textresult++succeedHTTPTest :: IO TestTree+succeedHTTPTest = do+  files <- findByExtension [".httptest"] "./tests/succeed"+  return $ testGroup "succeed" $ map tastyHTTPTest files++tastyHTTPTest :: FilePath -> TestTree+tastyHTTPTest testFile =+  let+    goldenFilePath :: FilePath+    goldenFilePath = replaceExtension testFile ".golden"+    in goldenTest1 "Tabular HTTP blast" (liftM Just (TIO.readFile goldenFilePath)) (testBlastHTTPS testFile) compareText (ShowText) print+  --in goldenVsAction "Tabular HTTP blast" goldenFile (blastHTTPFromFile testFile) (\a -> T.pack $ concatMap show a)++testBlastHTTPS :: FilePath -> IO T.Text+testBlastHTTPS testFile = do+  result <- blastHTTPFromFile testFile+  let textresult = T.pack $ ((concatMap show result) ++ "\n")+  return textresult++compareText :: T.Text -> T.Text -> GDiff+compareText goldT testT+  | goldT == testT = Equal+  | otherwise = DiffText (Just ("Golden file and test output are different:\nTest:\n" ++ T.unpack testT ++ "\nGold:\n" ++ T.unpack goldT)) testT goldT
+ tests/succeed/httptabular.golden view
@@ -0,0 +1,1 @@+BlastTabularResult {blastProgram = BlastN, blastQueryId = "Aeromonas", blastDatabase = "nt", blastHitNumber = 9, hitLines = [BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1214238400|gb|CP022186.1|", seqIdentity = 100.0, alignmentLength = 62, misMatches = 0, gapOpenScore = 0, queryStart = 1, queryEnd = 62, hitSeqStart = 4466360, hitSeqEnd = 4466299, eValue = 3.85e-22, bitScore = 113.0, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1214232668|gb|CP022181.1|", seqIdentity = 100.0, alignmentLength = 62, misMatches = 0, gapOpenScore = 0, queryStart = 1, queryEnd = 62, hitSeqStart = 4451525, hitSeqEnd = 4451464, eValue = 3.85e-22, bitScore = 113.0, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1214226508|gb|CP022175.1|", seqIdentity = 100.0, alignmentLength = 62, misMatches = 0, gapOpenScore = 0, queryStart = 1, queryEnd = 62, hitSeqStart = 4459524, hitSeqEnd = 4459463, eValue = 3.85e-22, bitScore = 113.0, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1202187378|gb|CP021654.1|", seqIdentity = 100.0, alignmentLength = 62, misMatches = 0, gapOpenScore = 0, queryStart = 1, queryEnd = 62, hitSeqStart = 4130312, hitSeqEnd = 4130373, eValue = 3.85e-22, bitScore = 113.0, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|142849896|gb|CP000644.1|", seqIdentity = 100.0, alignmentLength = 62, misMatches = 0, gapOpenScore = 0, queryStart = 1, queryEnd = 62, hitSeqStart = 197460, hitSeqEnd = 197521, eValue = 3.85e-22, bitScore = 113.0, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1024308492|gb|CP015448.1|", seqIdentity = 95.161, alignmentLength = 62, misMatches = 2, gapOpenScore = 1, queryStart = 1, queryEnd = 62, hitSeqStart = 690724, hitSeqEnd = 690664, eValue = 1.03e-16, bitScore = 95.1, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1024268833|gb|CP014774.1|", seqIdentity = 95.161, alignmentLength = 62, misMatches = 2, gapOpenScore = 1, queryStart = 1, queryEnd = 62, hitSeqStart = 2959093, hitSeqEnd = 2959153, eValue = 1.03e-16, bitScore = 95.1, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|1006067808|gb|CP012504.1|", seqIdentity = 95.161, alignmentLength = 62, misMatches = 2, gapOpenScore = 1, queryStart = 1, queryEnd = 62, hitSeqStart = 391011, hitSeqEnd = 391071, eValue = 1.03e-16, bitScore = 95.1, subjectFrame = 0, querySeq = "", subjectSeq = ""},BlastTabularHit {queryId = "Aeromonas", subjectId = "gi|328802836|gb|CP002607.1|", seqIdentity = 95.161, alignmentLength = 62, misMatches = 2, gapOpenScore = 1, queryStart = 1, queryEnd = 62, hitSeqStart = 167317, hitSeqEnd = 167377, eValue = 1.03e-16, bitScore = 95.1, subjectFrame = 0, querySeq = "", subjectSeq = ""}]}
+ tests/succeed/tabular.golden view
@@ -0,0 +1,1 @@+BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DWD5", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DWJ5", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DX03", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DYA3", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DYI3", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 3, hitLines = [BlastTabularHit {queryId = "UniRef50_A0A009DYI3", subjectId = "sp|P55729|Y4ZB_RHISN", seqIdentity = 39.535, alignmentLength = 86, misMatches = 52, gapOpenScore = 0, queryStart = 1, queryEnd = 86, hitSeqStart = 252, hitSeqEnd = 337, eValue = 3.7e-16, bitScore = 74.7, subjectFrame = 1, querySeq = "AIYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLVSFAQHLGKTGWTVQRLLRIIQVNLFERRTLKTLFSPDKI", subjectSeq = "ALYKGRWQIELLFRWIKQHLKIRSFLGNNDNAVRLQLFAAMIAYALLRIAARLNRITMPILRFTDLVIRCLFERRDIAAIERPPPV"},BlastTabularHit {queryId = "UniRef50_A0A009DYI3", subjectId = "sp|Q55566|T4SA_SYNY3", seqIdentity = 36.986, alignmentLength = 73, misMatches = 46, gapOpenScore = 0, queryStart = 2, queryEnd = 74, hitSeqStart = 253, hitSeqEnd = 325, eValue = 1.55e-7, bitScore = 50.8, subjectFrame = 1, querySeq = "IYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLVSFAQHLGKTGWTVQRLLRIIQVNLFER", subjectSeq = "IYKKRWQIELLWKFLKMHLKLNRLIAKNENAIGIQIYTCIIAYLILKLLVIPKEAGTTMLDKLRYLQAFMCEK"},BlastTabularHit {queryId = "UniRef50_A0A009DYI3", subjectId = "sp|Q45620|T5377_GEOSE", seqIdentity = 41.304, alignmentLength = 46, misMatches = 27, gapOpenScore = 0, queryStart = 2, queryEnd = 47, hitSeqStart = 276, hitSeqEnd = 321, eValue = 4.84e-6, bitScore = 46.6, subjectFrame = 1, querySeq = "IYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLV", subjectSeq = "MYQQRWAVEVFFRWVKQYLNVPTLFGTTENAVYNQLFAAFIAYVLL"}]}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009DZQ8", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009E0R3", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 1, hitLines = [BlastTabularHit {queryId = "UniRef50_A0A009E0R3", subjectId = "sp|P50358|Y4SN_RHISN", seqIdentity = 39.241, alignmentLength = 79, misMatches = 48, gapOpenScore = 0, queryStart = 4, queryEnd = 82, hitSeqStart = 28, hitSeqEnd = 106, eValue = 6.58e-15, bitScore = 68.9, subjectFrame = 1, querySeq = "PCFYCSIFLSIWLYRIRTGCPWRDIPSCFGHSNSIFKRFNRWSSSGKLLRLFKLLASCPDMEWIFIDGSHVRAHQHSAG", subjectSeq = "PRTNNRLFLDALLWMARSGGRWRDLPERLGDYRAVKRRYYRWIEMGVLDEMLAVLAREADLEWLMIDSTIVRAHQHAAG"}]}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009E1D7", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009E284", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009E2R5", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 0, hitLines = []}BlastTabularResult {blastProgram = BlastP, blastQueryId = "UniRef50_A0A009E3M2", blastDatabase = "uniprot_sprot.fasta", blastHitNumber = 8, hitLines = [BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q0P9C7|PGLJ_CAMJE", seqIdentity = 32.044, alignmentLength = 181, misMatches = 119, gapOpenScore = 2, queryStart = 98, queryEnd = 274, hitSeqStart = 152, hitSeqEnd = 332, eValue = 1.96e-20, bitScore = 93.6, subjectFrame = 1, querySeq = "SQGVEDDLKETLGDLPN-VSTIYNAFDQHYMQNQANEFQPELGKYLLHVGAFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQN", subjectSeq = "SKGNLEDLVQNFSISPKKCEILYNAIDLENIGQKALEDIALKDKFILSVGRLDKGKNHALLIRAYARLKTDLKLVILGEGVLKDELLALIKELNLEEKVLLLGFDNNPYKYMAKCEFFAFASVFEGFSNVLIESLACSCAVVCTDHKSGARELFGDDEFGLLVEVDNENSMFQGLKTMLED"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q58459|Y1059_METJA", seqIdentity = 38.596, alignmentLength = 114, misMatches = 67, gapOpenScore = 1, queryStart = 142, queryEnd = 252, hitSeqStart = 205, hitSeqEnd = 318, eValue = 2.28e-20, bitScore = 93.6, subjectFrame = 1, querySeq = "LLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSP", subjectSeq = "FINIGRLTEQKGQWFLIRSFKRVTEKYPNAKLIILGDGELKNKLQELINKLNLQNNVYLLGMQKNPFKFLKHSNCFVFSSLWEGLPNTVIEALSLNLPVISTDCKTGPREILCP"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q9R9N1|LPSE_RHIME", seqIdentity = 26.154, alignmentLength = 195, misMatches = 129, gapOpenScore = 7, queryStart = 89, queryEnd = 274, hitSeqStart = 116, hitSeqEnd = 304, eValue = 5.08e-12, bitScore = 68.9, subjectFrame = 1, querySeq = "YKKHPCI-CVSQGVEDDLKETLGDLPNVSTIYN--AFDQHYMQNQANEFQPELGKYLLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQN", subjectSeq = "FRNTDCIVCNTPGIAERVSD-LGWKREIRVISNFTGTGRVVAVDRAKLDTPADAPVVMSMGRFVERKGFHTLIEAVA----RLPGVYLWLLGDGEERDNLHKLATDLGVSGRVRFAGWQDDTRPFLAAVDVFVMSSSHEPLGNVILESWAQGTPVVSTRS-EGPQWFMRDGENGLMVDIGDAEGFARAIEQIVAD"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q81ST7|BSHA_BACAN", seqIdentity = 25.694, alignmentLength = 288, misMatches = 163, gapOpenScore = 11, queryStart = 1, queryEnd = 274, hitSeqStart = 87, hitSeqEnd = 337, eValue = 2.94e-11, bitScore = 67.0, subjectFrame = 1, querySeq = "IDIKHWYYKLFIIITWRYQYIAKQFDQYVLKNIGQPDLILSNLIQTNRIL--SNSKLDNIAYVIRNTFSKENENALLKNPNKVINRYREIYKKHPCICVSQGVEDDLKETLGDLPN--VSTIYNAFDQH-YMQNQANEFQPELG-----KYLLHVGAFCYAKAHDTLIKAYAESSQQI--PLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN--LVAVDDIKALAEKMNQVMQN", subjectSeq = "LDILHVHYAIPHAICA---YLAKQM-------IGERIKIVTTLHGTDITVLGSDPSLNNL---IR--FGIEQSDVVTAVSHSLINETHELVK----------------------PNKDIQTVYNFIDERVYFKRDMTQLKKEYGISESEKILIHISNFRKVKRVQDVVQAFAKIVTEVDAKLLLVGDGPEFCTILQLVKNLHIEDRVLFLGKQDNVAELLAMSDLMLLLSEKESFGLVLLEAMACGVPCIGTRVGGIPEVIQHGDTGYLCEVGDTTGVADQAIQLLKD"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q06994|RFAB_SALTY", seqIdentity = 24.675, alignmentLength = 231, misMatches = 148, gapOpenScore = 9, queryStart = 89, queryEnd = 300, hitSeqStart = 124, hitSeqEnd = 347, eValue = 2.12e-10, bitScore = 64.3, subjectFrame = 1, querySeq = "YKKHP-CI-------CVSQGVEDDLKETLGDLPNVSTIYNAFD-QHYMQNQANEFQPELGKYLLHVG--AFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPF----IKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSP---NNLVAVDDIKALAEKMNQVMQNPNDFYTPFNLNFLPCNIAKQY-LDYFK", subjectSeq = "HKKHAECITYADYHLAISSGIKEQIMARGISAQDISVVYNPVSIKTVIVPPPERDKPAV---FLYVGRLKFEGQKRVKDLFDGLARTTGEWQLHIIGDGSDFEKCQAYSRELGIEQRVIWYGWQSAPWQVVQQKIKNVTALLLTSAFEGFPMTLLEAMSYGIPCISSDCMSGPRDMIKPGLNGELYTPGAIDDFVGHLNRVISGE----VKYQHDIIPGTIERFYDVLYFK"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|P27127|RFAB_ECOLI", seqIdentity = 28.099, alignmentLength = 121, misMatches = 80, gapOpenScore = 2, queryStart = 157, queryEnd = 270, hitSeqStart = 198, hitSeqEnd = 318, eValue = 2.33e-9, bitScore = 61.2, subjectFrame = 1, querySeq = "LIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPF----IKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPN---NLVAVDDIKALAEKMNQ", subjectSeq = "LLDGLSQAKGNWKLHVLGDGSDFEKCQAYGRELNIDDRIVWYGWQQYPWELVQQDIEKVSALLLTSSFEGFPMTLLEALSWGIPCISADCVSGPADIIQPDVNGHLYQPGDIAGFVTLLNK"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|O05083|Y1698_HAEIN", seqIdentity = 26.056, alignmentLength = 142, misMatches = 99, gapOpenScore = 2, queryStart = 140, queryEnd = 275, hitSeqStart = 182, hitSeqEnd = 323, eValue = 8.24e-9, bitScore = 59.3, subjectFrame = 1, querySeq = "KYLLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQNP", subjectSeq = "KTILSVGHLFSYKGFDYLLKVWQVLAKKYPDWNLKIVGSGEEEENLKNLAKALDIEDSVNFIPRTNDVSFYYESSSIYCLPSQTEGLPLVVIEAMAFGLPIVAFNCSPGVKQLVEHKENGFLCEQNNIEEMVKGLDLLINNP"},BlastTabularHit {queryId = "UniRef50_A0A009E3M2", subjectId = "sp|Q9R9N0|LPSD_RHIME", seqIdentity = 24.419, alignmentLength = 172, misMatches = 118, gapOpenScore = 4, queryStart = 142, queryEnd = 303, hitSeqStart = 171, hitSeqEnd = 340, eValue = 1.3e-8, bitScore = 58.9, subjectFrame = 1, querySeq = "LLHVGAFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQNP-------NDFYTPFNLNFLPCNIAKQYLDYFKINI", subjectSeq = "VVGMGRFVKRKGFAGLIRAVKEV-ENTYLWLVGDGPEREQLEQLTDELGLRDRVRFTGWQTNAYGFLSAGDAFVINSSHEPLGNVCFEGWGAGKPTIASRA-EGPSWVMTHESDALMVDCGDDVGLAAAIRRLRDDPALRERLSAGGSETLRTRFSEKAITDAYLDLFDRGV"}]}
+ tests/succeed/tabular.test view
@@ -0,0 +1,59 @@+# BLASTP 2.4.0++# Query: UniRef50_A0A009DWD5 Uncharacterized protein (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009DWD5_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009DWJ5 Putative transposase (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009DWJ5_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009DX03 Uncharacterized protein (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009DX03_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009DYA3 Putative integrase n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009DYA3_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009DYI3 Transposase DDE domain protein (Fragment) n=3 Tax=Acinetobacter baumannii 348935 RepID=A0A009DYI3_ACIBA+# Database: uniprot_sprot.fasta+# Fields: query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score, sbjct frame, query seq, subject seq+# 3 hits found+UniRef50_A0A009DYI3	sp|P55729|Y4ZB_RHISN	39.535	86	52	0	1	86	252	337	3.70e-16	74.7	1	AIYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLVSFAQHLGKTGWTVQRLLRIIQVNLFERRTLKTLFSPDKI	ALYKGRWQIELLFRWIKQHLKIRSFLGNNDNAVRLQLFAAMIAYALLRIAARLNRITMPILRFTDLVIRCLFERRDIAAIERPPPV+UniRef50_A0A009DYI3	sp|Q55566|T4SA_SYNY3	36.986	73	46	0	2	74	253	325	1.55e-07	50.8	1	IYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLVSFAQHLGKTGWTVQRLLRIIQVNLFER	IYKKRWQIELLWKFLKMHLKLNRLIAKNENAIGIQIYTCIIAYLILKLLVIPKEAGTTMLDKLRYLQAFMCEK+UniRef50_A0A009DYI3	sp|Q45620|T5377_GEOSE	41.304	46	27	0	2	47	276	321	4.84e-06	46.6	1	IYKDRWKVELFFKAIKQNLKLKAFLGRSRNAIQTQIWIAMIAYLLV	MYQQRWAVEVFFRWVKQYLNVPTLFGTTENAVYNQLFAAFIAYVLL+# BLASTP 2.4.0++# Query: UniRef50_A0A009DZQ8 Putative membrane protein (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009DZQ8_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009E0R3 Transposase DDE domain protein (Fragment) n=5 Tax=Acinetobacter RepID=A0A009E0R3_ACIBA+# Database: uniprot_sprot.fasta+# Fields: query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score, sbjct frame, query seq, subject seq+# 1 hits found+UniRef50_A0A009E0R3	sp|P50358|Y4SN_RHISN	39.241	79	48	0	4	82	28	106	6.58e-15	68.9	1	PCFYCSIFLSIWLYRIRTGCPWRDIPSCFGHSNSIFKRFNRWSSSGKLLRLFKLLASCPDMEWIFIDGSHVRAHQHSAG	PRTNNRLFLDALLWMARSGGRWRDLPERLGDYRAVKRRYYRWIEMGVLDEMLAVLAREADLEWLMIDSTIVRAHQHAAG+# BLASTP 2.4.0++# Query: UniRef50_A0A009E1D7 Uncharacterized protein (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009E1D7_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009E284 Uncharacterized protein n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009E284_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009E2R5 Toxin-antitoxin system, antitoxin component, Xre family n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009E2R5_ACIBA+# Database: uniprot_sprot.fasta+# 0 hits found+# BLASTP 2.4.0++# Query: UniRef50_A0A009E3M2 Glycosyl transferases group 1 family protein (Fragment) n=1 Tax=Acinetobacter baumannii 348935 RepID=A0A009E3M2_ACIBA+# Database: uniprot_sprot.fasta+# Fields: query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score, sbjct frame, query seq, subject seq+# 8 hits found+UniRef50_A0A009E3M2	sp|Q0P9C7|PGLJ_CAMJE	32.044	181	119	2	98	274	152	332	1.96e-20	93.6	1	SQGVEDDLKETLGDLPN-VSTIYNAFDQHYMQNQANEFQPELGKYLLHVGAFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQN	SKGNLEDLVQNFSISPKKCEILYNAIDLENIGQKALEDIALKDKFILSVGRLDKGKNHALLIRAYARLKTDLKLVILGEGVLKDELLALIKELNLEEKVLLLGFDNNPYKYMAKCEFFAFASVFEGFSNVLIESLACSCAVVCTDHKSGARELFGDDEFGLLVEVDNENSMFQGLKTMLED+UniRef50_A0A009E3M2	sp|Q58459|Y1059_METJA	38.596	114	67	1	142	252	205	318	2.28e-20	93.6	1	LLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSP	FINIGRLTEQKGQWFLIRSFKRVTEKYPNAKLIILGDGELKNKLQELINKLNLQNNVYLLGMQKNPFKFLKHSNCFVFSSLWEGLPNTVIEALSLNLPVISTDCKTGPREILCP+UniRef50_A0A009E3M2	sp|Q9R9N1|LPSE_RHIME	26.154	195	129	7	89	274	116	304	5.08e-12	68.9	1	YKKHPCI-CVSQGVEDDLKETLGDLPNVSTIYN--AFDQHYMQNQANEFQPELGKYLLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQN	FRNTDCIVCNTPGIAERVSD-LGWKREIRVISNFTGTGRVVAVDRAKLDTPADAPVVMSMGRFVERKGFHTLIEAVA----RLPGVYLWLLGDGEERDNLHKLATDLGVSGRVRFAGWQDDTRPFLAAVDVFVMSSSHEPLGNVILESWAQGTPVVSTRS-EGPQWFMRDGENGLMVDIGDAEGFARAIEQIVAD+UniRef50_A0A009E3M2	sp|Q81ST7|BSHA_BACAN	25.694	288	163	11	1	274	87	337	2.94e-11	67.0	1	IDIKHWYYKLFIIITWRYQYIAKQFDQYVLKNIGQPDLILSNLIQTNRIL--SNSKLDNIAYVIRNTFSKENENALLKNPNKVINRYREIYKKHPCICVSQGVEDDLKETLGDLPN--VSTIYNAFDQH-YMQNQANEFQPELG-----KYLLHVGAFCYAKAHDTLIKAYAESSQQI--PLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN--LVAVDDIKALAEKMNQVMQN	LDILHVHYAIPHAICA---YLAKQM-------IGERIKIVTTLHGTDITVLGSDPSLNNL---IR--FGIEQSDVVTAVSHSLINETHELVK----------------------PNKDIQTVYNFIDERVYFKRDMTQLKKEYGISESEKILIHISNFRKVKRVQDVVQAFAKIVTEVDAKLLLVGDGPEFCTILQLVKNLHIEDRVLFLGKQDNVAELLAMSDLMLLLSEKESFGLVLLEAMACGVPCIGTRVGGIPEVIQHGDTGYLCEVGDTTGVADQAIQLLKD+UniRef50_A0A009E3M2	sp|Q06994|RFAB_SALTY	24.675	231	148	9	89	300	124	347	2.12e-10	64.3	1	YKKHP-CI-------CVSQGVEDDLKETLGDLPNVSTIYNAFD-QHYMQNQANEFQPELGKYLLHVG--AFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPF----IKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSP---NNLVAVDDIKALAEKMNQVMQNPNDFYTPFNLNFLPCNIAKQY-LDYFK	HKKHAECITYADYHLAISSGIKEQIMARGISAQDISVVYNPVSIKTVIVPPPERDKPAV---FLYVGRLKFEGQKRVKDLFDGLARTTGEWQLHIIGDGSDFEKCQAYSRELGIEQRVIWYGWQSAPWQVVQQKIKNVTALLLTSAFEGFPMTLLEAMSYGIPCISSDCMSGPRDMIKPGLNGELYTPGAIDDFVGHLNRVISGE----VKYQHDIIPGTIERFYDVLYFK+UniRef50_A0A009E3M2	sp|P27127|RFAB_ECOLI	28.099	121	80	2	157	270	198	318	2.33e-09	61.2	1	LIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPF----IKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPN---NLVAVDDIKALAEKMNQ	LLDGLSQAKGNWKLHVLGDGSDFEKCQAYGRELNIDDRIVWYGWQQYPWELVQQDIEKVSALLLTSSFEGFPMTLLEALSWGIPCISADCVSGPADIIQPDVNGHLYQPGDIAGFVTLLNK+UniRef50_A0A009E3M2	sp|O05083|Y1698_HAEIN	26.056	142	99	2	140	275	182	323	8.24e-09	59.3	1	KYLLHVGAFCYAKAHDTLIKAYAESSQQIP---LYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQNP	KTILSVGHLFSYKGFDYLLKVWQVLAKKYPDWNLKIVGSGEEEENLKNLAKALDIEDSVNFIPRTNDVSFYYESSSIYCLPSQTEGLPLVVIEAMAFGLPIVAFNCSPGVKQLVEHKENGFLCEQNNIEEMVKGLDLLINNP+UniRef50_A0A009E3M2	sp|Q9R9N0|LPSD_RHIME	24.419	172	118	4	142	303	171	340	1.30e-08	58.9	1	LLHVGAFCYAKAHDTLIKAYAESSQQIPLYLLGKGELEADIKQLIYSLNLEKKVHFLGFNKNPYPFIKNAQALILSSRYEGFVRVISEALALGTPVISTNCPSGPNEILSPNN---LVAVDDIKALAEKMNQVMQNP-------NDFYTPFNLNFLPCNIAKQYLDYFKINI	VVGMGRFVKRKGFAGLIRAVKEV-ENTYLWLVGDGPEREQLEQLTDELGLRDRVRFTGWQTNAYGFLSAGDAFVINSSHEPLGNVCFEGWGAGKPTIASRA-EGPSWVMTHESDALMVDCGDDVGLAAAIRRLRDDPALRERLSAGGSETLRTRFSEKAITDAYLDLFDRGV