Mercurial > repos > recetox > data_manager_recetox_metabolite_fetcher
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 |
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()) |