# HG changeset patch # User drosofff # Date 1497605297 14400 # Node ID c6de5c7b4ae3e8a820522b801de306f9e77cbc45 # Parent 64f45c5e94a0fff46210549883b92f36bbd58d52 planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/fetch_fasta_from_ncbi commit 11ca680184135ef39a6c552d9f3cc427a8ed6c4c diff -r 64f45c5e94a0 -r c6de5c7b4ae3 retrieve_fasta_from_NCBI.py --- a/retrieve_fasta_from_NCBI.py Mon May 15 03:10:11 2017 -0400 +++ b/retrieve_fasta_from_NCBI.py Fri Jun 16 05:28:17 2017 -0400 @@ -32,6 +32,10 @@ import re +class QueryException(Exception): + pass + + class Eutils: def __init__(self, options, logger): @@ -62,9 +66,14 @@ # If no UIDs are found exit script if self.count > 0: self.get_uids_list() - self.get_sequences() + try: + self.get_sequences() + except QueryException as e: + self.logger.error("Exiting script.") + raise e else: - self.logger.info("No UIDs were found. Exiting script.") + self.logger.error("No UIDs were found. Exiting script.") + raise Exception("") def get_count_value(self): """ @@ -195,6 +204,14 @@ if ( (response_code != 200) or ("Resource temporarily unavailable" in fasta) or ("Error" in fasta) or (not fasta.startswith(">") ) ): serverTransaction = False + if ( response_code != 200 ): + self.logger.info("urlopen error: Response code is not 200") + elif ( "Resource temporarily unavailable" in fasta ): + self.logger.info("Ressource temporarily unavailable") + elif ( "Error" in fasta ): + self.logger.info("Error in fasta") + else: + self.logger.info("Fasta doesn't start with '>'") else: serverTransaction = True except urllib2.HTTPError as e: @@ -207,6 +224,10 @@ except httplib.IncompleteRead as e: serverTransaction = False self.logger.info("IncompleteRead error: %s" % ( e.partial ) ) + if (counter > 500): + serverTransaction = True + if (counter > 500): + raise QueryException({"message":"500 Server Transaction Trials attempted for this batch. Aborting."}) fasta = self.sanitiser(self.dbname, fasta) time.sleep(0.1) return fasta @@ -270,8 +291,12 @@ mfasta = '' while not mfasta: self.logger.info("retrieving batch %d" % ((start / batch_size) + 1)) - mfasta = self.efetch(self.dbname, self.query_key, self.webenv) - out.write(mfasta + '\n') + try: + mfasta = self.efetch(self.dbname, self.query_key, self.webenv) + out.write(mfasta + '\n') + except QueryException as e: + self.logger.error("%s" % e.message) + raise e LOG_FORMAT = '%(asctime)s|%(levelname)-8s|%(message)s' @@ -301,7 +326,10 @@ logger = logging.getLogger('data_from_NCBI') E = Eutils(options, logger) - E.retrieve() + try: + E.retrieve() + except Exception as e: + sys.exit(1) if __name__ == "__main__": diff -r 64f45c5e94a0 -r c6de5c7b4ae3 retrieve_fasta_from_NCBI.xml --- a/retrieve_fasta_from_NCBI.xml Mon May 15 03:10:11 2017 -0400 +++ b/retrieve_fasta_from_NCBI.xml Fri Jun 16 05:28:17 2017 -0400 @@ -1,4 +1,4 @@ - +