Mercurial > repos > drosofff > fetch_fasta_from_ncbi
comparison retrieve_fasta_from_NCBI.py @ 8:cc43a7a11324 draft
planemo upload for repository https://bitbucket.org/drosofff/gedtools/
author | drosofff |
---|---|
date | Sun, 31 May 2015 06:59:26 -0400 |
parents | cd7de2d6c716 |
children | 2c5375809c03 |
comparison
equal
deleted
inserted
replaced
7:cd7de2d6c716 | 8:cc43a7a11324 |
---|---|
131 except: # catch *all* exceptions | 131 except: # catch *all* exceptions |
132 e = sys.exc_info()[0] | 132 e = sys.exc_info()[0] |
133 self.logger.info( "Catched Error: %s" % e ) | 133 self.logger.info( "Catched Error: %s" % e ) |
134 self.logger.info( "Retrying in 10 sec") | 134 self.logger.info( "Retrying in 10 sec") |
135 time.sleep(10) | 135 time.sleep(10) |
136 # except urllib2.HTTPError as e: | |
137 # serverResponse = False | |
138 # self.logger.info("epost error:%s, %s" % (e.code, e.read() ) ) | |
139 querylog = response.readlines() | 136 querylog = response.readlines() |
140 self.logger.debug("query response:") | 137 self.logger.debug("query response:") |
141 for line in querylog: | 138 for line in querylog: |
142 self.logger.debug(line.rstrip()) | 139 self.logger.debug(line.rstrip()) |
143 if '</QueryKey>' in line: | 140 if '</QueryKey>' in line: |
159 'retmode': "text"} | 156 'retmode': "text"} |
160 data = urllib.urlencode(values) | 157 data = urllib.urlencode(values) |
161 req = urllib2.Request(url, data) | 158 req = urllib2.Request(url, data) |
162 self.logger.debug("data: %s" % str(data)) | 159 self.logger.debug("data: %s" % str(data)) |
163 req = urllib2.Request(url, data) | 160 req = urllib2.Request(url, data) |
164 serverResponse = False | 161 serverTransaction = False |
165 while not serverResponse: | 162 counter = 0 |
163 while not serverTransaction: | |
164 counter += 1 | |
165 self.logger.info("Server Transaction Trial: %s" % ( counter ) ) | |
166 try: | 166 try: |
167 response = urllib2.urlopen(req) | 167 response = urllib2.urlopen(req) |
168 serverResponse = True | 168 fasta = response.read() |
169 if "Resource temporarily unavailable" in fasta: | |
170 serverTransaction = False | |
171 else: | |
172 serverTransaction = True | |
169 except urllib2.HTTPError as e: | 173 except urllib2.HTTPError as e: |
170 serverResponse = False | 174 serverTransaction = False |
171 self.logger.info("urlopen error:%s, %s" % (e.code, e.read() ) ) | 175 self.logger.info("urlopen error:%s, %s" % (e.code, e.read() ) ) |
172 try: | 176 except httplib.IncompleteRead as e: |
173 fasta = response.read() | 177 serverTransaction = False |
174 except httplib.IncompleteRead as e: | 178 self.logger.info("IncompleteRead error: %s" % ( e.partial ) ) |
175 fasta = e.partial | |
176 if "Resource temporarily unavailable" in fasta: | |
177 return '' # to reiterate the failed download | |
178 if self.dbname != "pubmed": | 179 if self.dbname != "pubmed": |
179 assert fasta.startswith(">"), fasta | 180 assert fasta.startswith(">"), fasta |
180 fasta = self.sanitiser(self.dbname, fasta) # | 181 fasta = self.sanitiser(self.dbname, fasta) # |
181 time.sleep(1) | 182 time.sleep(1) |
182 return fasta | 183 return fasta |