Mercurial > repos > iuc > data_manager_vsnp_genbank
annotate data_manager/vsnp_genbank_fetcher.py @ 1:98babcb65125 draft default tip
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 02d2967f77e3fa5a18aea63dc84aa9ab418dc165"
author | iuc |
---|---|
date | Sun, 22 Nov 2020 12:55:34 +0000 |
parents | efed56c325da |
children |
rev | line source |
---|---|
0
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
1 import argparse |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
2 import json |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
3 import os |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
4 import sys |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
5 try: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
6 # For Python 3.0 and later |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
7 from urllib.request import Request, urlopen |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
8 except ImportError: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
9 # Fall back to Python 2 imports |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
10 from urllib2 import Request, urlopen |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
11 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
12 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
13 def url_download(url, workdir): |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
14 file_path = os.path.abspath(os.path.join(workdir, os.path.basename(url))) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
15 src = None |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
16 dst = None |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
17 try: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
18 req = Request(url) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
19 src = urlopen(req) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
20 with open(file_path, 'wb') as dst: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
21 while True: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
22 chunk = src.read(2**10) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
23 if chunk: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
24 dst.write(chunk) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
25 else: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
26 break |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
27 except Exception as e: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
28 sys.exit(str(e)) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
29 finally: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
30 if src: |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
31 src.close() |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
32 return file_path |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
33 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
34 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
35 def download(dbkey, name, url, out_file): |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
36 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
37 with open(out_file) as fh: |
1
98babcb65125
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 02d2967f77e3fa5a18aea63dc84aa9ab418dc165"
iuc
parents:
0
diff
changeset
|
38 params = json.load(fh) |
0
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
39 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
40 workdir = params['output_data'][0]['extra_files_path'] |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
41 os.makedirs(workdir) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
42 file_path = url_download(url, workdir) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
43 entry_name = os.path.basename(file_path) |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
44 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
45 data_manager_json = {"data_tables": {}} |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
46 data_manager_entry = {} |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
47 data_manager_entry['value'] = dbkey |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
48 data_manager_entry['name'] = entry_name |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
49 data_manager_entry['path'] = file_path |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
50 data_manager_entry['description'] = "Genbank file for %s" % name |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
51 data_manager_json["data_tables"]["vsnp_genbank"] = data_manager_entry |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
52 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
53 with open(out_file, 'w') as fh: |
1
98babcb65125
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 02d2967f77e3fa5a18aea63dc84aa9ab418dc165"
iuc
parents:
0
diff
changeset
|
54 json.dump(data_manager_json, fh, sort_keys=True) |
0
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
55 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
56 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
57 parser = argparse.ArgumentParser() |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
58 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
59 parser.add_argument('--dbkey', dest='dbkey', help='Genome reference dbkey') |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
60 parser.add_argument('--name', dest='name', help='Reference display name') |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
61 parser.add_argument('--url', dest='url', help='URL to download Genbank file') |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
62 parser.add_argument('--out_file', dest='out_file', help='JSON output file') |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
63 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
64 args = parser.parse_args() |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
65 |
efed56c325da
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_vsnp_genbank commit 31f4453e44da62788efd01736ed57ad483383b09"
iuc
parents:
diff
changeset
|
66 download(args.dbkey, args.name, args.url, args.out_file) |