Mercurial > repos > matthias > data_manager_mitos
comparison data_manager/data_manager.py @ 0:d1beb6fba192 draft default tip
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tree/master/data_managers/data_manager_mitos commit a7354d02377105590891f7337f472dc2a2f224a4
author | matthias |
---|---|
date | Thu, 09 May 2019 16:20:33 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d1beb6fba192 |
---|---|
1 import argparse | |
2 import json | |
3 import os | |
4 import shutil | |
5 import sys | |
6 import tarfile | |
7 try: | |
8 # For Python 3.0 and later | |
9 from urllib.request import Request, urlopen | |
10 except ImportError: | |
11 # Fall back to Python 2 imports | |
12 from urllib2 import Request, urlopen | |
13 | |
14 ZENODO = { | |
15 "mitos":"2683856", | |
16 "mitos2": "2672835" | |
17 } | |
18 | |
19 NAMES = { | |
20 "mitos1-refdata": "RefSeq39 + MiTFi tRNA models", | |
21 "refseq39": "RefSeq39 (equivalent to MITOS1 data)", | |
22 "refseq63m": "RefSeq63 Metazoa", | |
23 "refseq63f": "RefSeq63 Fungi", | |
24 "refseq63o": "RefSeq63 Opisthokonta", | |
25 "refseq81m": "RefSeq81 Metazoa", | |
26 "refseq81f": "RefSeq81 Fungi", | |
27 "refseq81o": "RefSeq81 Opisthokonta" | |
28 } | |
29 | |
30 def url_download(tpe, db, workdir): | |
31 """ | |
32 download http://ab.inf.uni-tuebingen.de/data/software/megan6/download/FNAME | |
33 to workdir | |
34 and unzip | |
35 | |
36 return the name of the resulting dir | |
37 """ | |
38 tarfname = os.path.join(workdir, db + ".tar.bz") | |
39 if not os.path.exists(workdir): | |
40 os.makedirs(workdir) | |
41 src = None | |
42 dst = None | |
43 try: | |
44 req = Request("https://zenodo.org/record/{zenodoid}/files/{db}.tar.bz2?download=1".format(zenodoid=ZENODO[tpe], db=db)) | |
45 src = urlopen(req) | |
46 with open(tarfname, 'wb') as dst: | |
47 while True: | |
48 chunk = src.read(2**10) | |
49 if chunk: | |
50 dst.write(chunk) | |
51 else: | |
52 break | |
53 finally: | |
54 if src: | |
55 src.close() | |
56 with tarfile.open(tarfname, "r:bz2") as tar: | |
57 tar.extractall(workdir) | |
58 os.remove(tarfname) | |
59 unzipped = os.listdir(workdir) | |
60 assert len(unzipped) == 1 | |
61 return unzipped[0] | |
62 | |
63 def main(tpe, db, outjson): | |
64 | |
65 workdir = os.getcwd() | |
66 | |
67 path = url_download(tpe, db, workdir) | |
68 | |
69 data_manager_entry = {} | |
70 data_manager_entry['value'] = db | |
71 data_manager_entry['name'] = NAMES[db] | |
72 data_manager_entry['type'] = tpe | |
73 data_manager_entry['path'] = path | |
74 data_manager_json = dict(data_tables=dict(mitos=data_manager_entry)) | |
75 | |
76 params = json.loads(open(outjson).read()) | |
77 target_directory = params['output_data'][0]['extra_files_path'] | |
78 os.mkdir(target_directory) | |
79 output_path = os.path.abspath(os.path.join(os.getcwd(), 'mitos')) | |
80 shutil.move(os.path.join(workdir, path), target_directory) | |
81 file(outjson, 'w').write(json.dumps(data_manager_json)) | |
82 | |
83 if __name__ == '__main__': | |
84 parser = argparse.ArgumentParser(description='Create data manager json.') | |
85 parser.add_argument('--out', action='store', help='JSON filename') | |
86 parser.add_argument('--type', action='store', help='mitos version') | |
87 parser.add_argument('--db', action='store', help='db name') | |
88 args = parser.parse_args() | |
89 | |
90 main(args.type, args.db, args.out) |