BlastHTTP 1.0.0 → 1.0.1
raw patch · 2 files changed
+11/−14 lines, 2 files
Files
- BlastHTTP.cabal +1/−1
- src/Bio/BlastHTTP.hs +10/−13
BlastHTTP.cabal view
@@ -7,7 +7,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change-version: 1.0.0+version: 1.0.1 synopsis: Libary to interface with the NCBI blast REST interface description: Searches for a provided nucleotide or protein sequence with the NCBI Blast REST service and returns a blast result in xml format as BlastResult datatype. .
src/Bio/BlastHTTP.hs view
@@ -84,16 +84,14 @@ return (Right resultXML) -- | Check if job results are ready and then retrieves results-checkSessionStatus :: String -> Int -> IO (Either String BlastResult)-checkSessionStatus rid counter = do- let counter2 = counter + 1- let counter2string = show counter2+checkSessionStatus :: String -> IO (Either String BlastResult)+checkSessionStatus rid = do threadDelay 60000000 status <- retrieveSessionStatus rid- waitOrRetrieve status rid counter2+ waitOrRetrieve status rid -waitOrRetrieve :: String -> String -> Int -> IO (Either String BlastResult)-waitOrRetrieve status rid counter+waitOrRetrieve :: String -> String -> IO (Either String BlastResult)+waitOrRetrieve status rid | "Status=READY" `isInfixOf` status = retrieveResult rid | "Status=FAILURE" `isInfixOf` status = do let exceptionMessage = "Search $rid failed; please report to blast-help at ncbi.nlm.nih.gov.\n"@@ -101,14 +99,14 @@ | "Status=UNKNOWN" `isInfixOf` status = do let exceptionMessage = "Search $rid expired.\n" return (Left exceptionMessage)- | otherwise = checkSessionStatus rid counter+ | otherwise = checkSessionStatus rid -- | Sends Query and retrieves result on reaching READY status, will return exeption message if no query sequence has been provided -performQuery :: String -> String -> Maybe SeqData -> Maybe String -> Int -> IO (Either String BlastResult) -performQuery program database querySequenceMaybe optionalArgumentMaybe counter+performQuery :: String -> String -> Maybe SeqData -> Maybe String -> IO (Either String BlastResult) +performQuery program database querySequenceMaybe optionalArgumentMaybe | isJust querySequenceMaybe = do rid <- startSession program database (L8.unpack (unSD (fromJust querySequenceMaybe))) optionalArgumentMaybe- checkSessionStatus rid counter+ checkSessionStatus rid | otherwise = do let exceptionMessage = "Error - no query sequence provided" return (Left exceptionMessage)@@ -118,12 +116,11 @@ -- optionalArguments is attached to the query as is .e.g: "&ALIGNMENTS=250" blastHTTP :: BlastHTTPQuery -> IO (Either String BlastResult) blastHTTP (BlastHTTPQuery program database querySequence optionalArguments) = do- let counter = 1 let defaultProgram = "blastn" let defaultDatabase = "refseq_genomic" let selectedProgram = fromMaybe defaultProgram program let selectedDatabase = fromMaybe defaultDatabase database - performQuery selectedProgram selectedDatabase querySequence entrezQuery optionalArguments+ performQuery selectedProgram selectedDatabase querySequence optionalArguments