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)