comparison data_manager/data_manager.py @ 0:26a6f95e82c8 draft

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