Mercurial > repos > iuc > data_manager_mothur_toolsuite
comparison data_manager/fetch_mothur_reference_data.py @ 3:9d09724f2bf1 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_mothur_toolsuite/ commit 02d2967f77e3fa5a18aea63dc84aa9ab418dc165"
author | iuc |
---|---|
date | Sun, 22 Nov 2020 12:51:44 +0000 |
parents | 0e532fc0a0a6 |
children | 0db22932bc39 |
comparison
equal
deleted
inserted
replaced
2:0e532fc0a0a6 | 3:9d09724f2bf1 |
---|---|
158 NB the directory pointed to by 'extra_files_path' | 158 NB the directory pointed to by 'extra_files_path' |
159 doesn't exist initially, it is the job of the script | 159 doesn't exist initially, it is the job of the script |
160 to create it if necessary. | 160 to create it if necessary. |
161 | 161 |
162 """ | 162 """ |
163 params = json.loads(open(jsonfile).read()) | 163 with open(jsonfile) as fh: |
164 params = json.load(fh) | |
164 return (params['param_dict'], | 165 return (params['param_dict'], |
165 params['output_data'][0]['extra_files_path']) | 166 params['output_data'][0]['extra_files_path']) |
166 | 167 |
167 | 168 |
168 # Utility functions for creating data table dictionaries | 169 # Utility functions for creating data table dictionaries |
170 # Example usage: | 171 # Example usage: |
171 # >>> d = create_data_tables_dict() | 172 # >>> d = create_data_tables_dict() |
172 # >>> add_data_table(d,'my_data') | 173 # >>> add_data_table(d,'my_data') |
173 # >>> add_data_table_entry(dict(dbkey='hg19',value='human')) | 174 # >>> add_data_table_entry(dict(dbkey='hg19',value='human')) |
174 # >>> add_data_table_entry(dict(dbkey='mm9',value='mouse')) | 175 # >>> add_data_table_entry(dict(dbkey='mm9',value='mouse')) |
175 # >>> print str(json.dumps(d)) | 176 # >>> print(json.dumps(d)) |
176 def create_data_tables_dict(): | 177 def create_data_tables_dict(): |
177 """Return a dictionary for storing data table information | 178 """Return a dictionary for storing data table information |
178 | 179 |
179 Returns a dictionary that can be used with 'add_data_table' | 180 Returns a dictionary that can be used with 'add_data_table' |
180 and 'add_data_table_entry' to store information about a | 181 and 'add_data_table_entry' to store information about a |
233 if not target: | 234 if not target: |
234 target = os.path.basename(url) | 235 target = os.path.basename(url) |
235 if wd: | 236 if wd: |
236 target = os.path.join(wd, target) | 237 target = os.path.join(wd, target) |
237 print("Saving to %s" % target) | 238 print("Saving to %s" % target) |
238 open(target, 'wb').write(urllib2.urlopen(url).read()) | 239 with open(target, 'wb') as fh: |
240 fh.write(urllib2.urlopen(url).read()) | |
239 return target | 241 return target |
240 | 242 |
241 | 243 |
242 def unpack_zip_archive(filen, wd=None): | 244 def unpack_zip_archive(filen, wd=None): |
243 """Extract files from a ZIP archive | 245 """Extract files from a ZIP archive |
256 """ | 258 """ |
257 if not zipfile.is_zipfile(filen): | 259 if not zipfile.is_zipfile(filen): |
258 print("%s: not ZIP formatted file") | 260 print("%s: not ZIP formatted file") |
259 return [filen] | 261 return [filen] |
260 file_list = [] | 262 file_list = [] |
261 z = zipfile.ZipFile(filen) | 263 with zipfile.ZipFile(filen) as z: |
262 for name in z.namelist(): | 264 for name in z.namelist(): |
263 if reduce(lambda x, y: x or name.startswith(y), IGNORE_PATHS, False): | 265 if reduce(lambda x, y: x or name.startswith(y), IGNORE_PATHS, False): |
264 print("Ignoring %s" % name) | 266 print("Ignoring %s" % name) |
265 continue | 267 continue |
266 if wd: | 268 if wd: |
267 target = os.path.join(wd, name) | 269 target = os.path.join(wd, name) |
268 else: | 270 else: |
269 target = name | 271 target = name |
270 if name.endswith('/'): | 272 if name.endswith('/'): |
271 # Make directory | 273 # Make directory |
272 print("Creating dir %s" % target) | 274 print("Creating dir %s" % target) |
273 try: | 275 try: |
274 os.makedirs(target) | 276 os.makedirs(target) |
275 except OSError: | 277 except OSError: |
276 pass | 278 pass |
277 else: | 279 else: |
278 # Extract file | 280 # Extract file |
279 print("Extracting %s" % name) | 281 print("Extracting %s" % name) |
280 try: | 282 try: |
281 os.makedirs(os.path.dirname(target)) | 283 os.makedirs(os.path.dirname(target)) |
282 except OSError: | 284 except OSError: |
283 pass | 285 pass |
284 open(target, 'wb').write(z.read(name)) | 286 with open(target, 'wb') as fh: |
285 file_list.append(target) | 287 fh.write(z.read(name)) |
288 file_list.append(target) | |
286 print("Removing %s" % filen) | 289 print("Removing %s" % filen) |
287 os.remove(filen) | 290 os.remove(filen) |
288 return file_list | 291 return file_list |
289 | 292 |
290 | 293 |
306 """ | 309 """ |
307 file_list = [] | 310 file_list = [] |
308 if not tarfile.is_tarfile(filen): | 311 if not tarfile.is_tarfile(filen): |
309 print("%s: not TAR file") | 312 print("%s: not TAR file") |
310 return [filen] | 313 return [filen] |
311 t = tarfile.open(filen) | 314 with tarfile.open(filen) as t: |
312 for name in t.getnames(): | 315 for name in t.getnames(): |
313 # Check for unwanted files | 316 # Check for unwanted files |
314 if reduce(lambda x, y: x or name.startswith(y), IGNORE_PATHS, False): | 317 if reduce(lambda x, y: x or name.startswith(y), IGNORE_PATHS, False): |
315 print("Ignoring %s" % name) | 318 print("Ignoring %s" % name) |
316 continue | 319 continue |
317 # Extract file | 320 # Extract file |
318 print("Extracting %s" % name) | 321 print("Extracting %s" % name) |
319 t.extract(name, wd) | 322 t.extract(name, wd) |
320 if wd: | 323 if wd: |
321 target = os.path.join(wd, name) | 324 target = os.path.join(wd, name) |
322 else: | 325 else: |
323 target = name | 326 target = name |
324 file_list.append(target) | 327 file_list.append(target) |
325 print("Removing %s" % filen) | 328 print("Removing %s" % filen) |
326 os.remove(filen) | 329 os.remove(filen) |
327 return file_list | 330 return file_list |
328 | 331 |
329 | 332 |
554 # that might have been inserted by Galaxy) | 557 # that might have been inserted by Galaxy) |
555 paths = options.paths.replace('__cn__', '\n').replace('__cr__', '\r').split() | 558 paths = options.paths.replace('__cn__', '\n').replace('__cr__', '\r').split() |
556 import_from_server(data_tables, target_dir, paths, description, link_to_data=options.link_to_data) | 559 import_from_server(data_tables, target_dir, paths, description, link_to_data=options.link_to_data) |
557 # Write output JSON | 560 # Write output JSON |
558 print("Outputting JSON") | 561 print("Outputting JSON") |
559 print(json.dumps(data_tables)) | 562 with open(jsonfile, 'w') as fh: |
560 open(jsonfile, 'w').write(json.dumps(data_tables, sort_keys=True)) | 563 json.dump(data_tables, fh, sort_keys=True) |
561 print("Done.") | 564 print("Done.") |