annotate data_manager/recetox_metabolite_fetcher.py @ 0:953dd78a34d3 draft default tip

"planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
author recetox
date Tue, 25 Aug 2020 11:15:49 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
1 import os
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
2 import errno
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
3
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
4 from argparse import ArgumentParser
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
5 from datetime import datetime
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
6 from json import dumps, loads
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
7 from urllib.parse import urlparse
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
8 from shutil import copy
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
9
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
10
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
11 def main(args):
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
12 with open(args.data_manager_json, 'r') as json_in:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
13 data_manager_input = loads(json_in.read())
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
14 target_directory = data_manager_input['output_data'][0]['extra_files_path']
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
15
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
16 try:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
17 os.mkdir(target_directory)
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
18 except OSError as exc:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
19 if exc.errno == errno.EEXIST and os.path.isdir(target_directory):
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
20 pass
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
21 else:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
22 raise
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
23
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
24 date = str(datetime.now())
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
25 base = urlparse(args.database_url).hostname.split('.')[-2]
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
26 name = f'{base}_{date}'.replace(' ', '_')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
27
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
28 if base not in ['hmdb', 't3db']:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
29 raise NameError('Unknown database')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
30
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
31 src = os.path.join(args.tool_data_dir, f'{base}.h5')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
32 dst = os.path.join(target_directory, f'{name}.h5')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
33 copy(src, dst)
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
34
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
35 data_table_entry = {
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
36 'data_tables': {
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
37 'recetox_metabolite_databases' : [
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
38 {
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
39 "value": name,
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
40 "name": name,
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
41 "date": date,
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
42 "path": f'{name}.h5',
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
43 }
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
44 ]
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
45 }
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
46 }
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
47
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
48 with open(args.data_manager_json, 'w') as json_out:
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
49 json_out.write(dumps(data_table_entry))
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
50
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
51
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
52 if __name__ == "__main__":
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
53 parser = ArgumentParser()
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
54 parser.add_argument('--tool_data_dir')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
55 parser.add_argument('--database_url')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
56 parser.add_argument('--data_manager_json')
953dd78a34d3 "planemo upload commit be4b24b2dacc3f23538068d5a6082bca246f6887"
recetox
parents:
diff changeset
57 main(parser.parse_args())