comparison data_manager/data_manager_amrfinderplus.py @ 1:254479b50f86 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_amrfinderplus commit 25a0413337c540dc9f26bc7ee097d493f0d148ca-dirty
author pimarin
date Mon, 14 Nov 2022 13:40:22 +0000
parents 8e1bbef44e19
children
comparison
equal deleted inserted replaced
0:8e1bbef44e19 1:254479b50f86
1 import argparse 1 import argparse
2 import json 2 import json
3 import os 3 import os
4 import re 4 import re
5 import subprocess as sp
6
5 from datetime import datetime 7 from datetime import datetime
6 from pathlib import Path 8 from pathlib import Path
7 import subprocess as sp
8 9
9 10
10 class GetDataManager: 11 class GetDataManager:
11 12
12 def __init__(self): 13 def __init__(self):
34 name=amrfinderplus_version, 35 name=amrfinderplus_version,
35 path=self._db_name) 36 path=self._db_name)
36 self.amrfinderplus_table_list["data_tables"][self.data_table_name] = [data_info] 37 self.amrfinderplus_table_list["data_tables"][self.data_table_name] = [data_info]
37 return self.amrfinderplus_table_list 38 return self.amrfinderplus_table_list
38 39
39 def update_amrfinderplus_db(self, path): 40 def update_amrfinderplus_db(self):
40 amrfinderplus_db_path = path.joinpath(self._db_name) 41 amrfinderplus_db_path = Path(self._db_path).joinpath(self._db_name)
41 cmd = [ 42 cmd = [
42 'amrfinder_update', 43 'amrfinder_update',
43 '--database', str(amrfinderplus_db_path), 44 '--database', str(amrfinderplus_db_path),
44 '--force_update' 45 '--force_update'
45 ] 46 ]
46 print('cmd=%s', cmd) 47 print(cmd)
47 proc = sp.run( 48 proc = sp.run(
48 cmd, 49 cmd,
49 stdout=sp.PIPE, 50 stdout=sp.PIPE,
50 stderr=sp.PIPE, 51 stderr=sp.PIPE,
51 universal_newlines=True 52 universal_newlines=True
52 ) 53 )
53 if(proc.returncode != 0): 54 if (proc.returncode != 0):
54 print(f"ERROR: AMRFinderPlus failed! command: 'amrfinder_update --force_update --database {amrfinderplus_db_path}', error code: {proc.returncode}") 55 print(
56 f"ERROR: AMRFinderPlus failed! command: 'amrfinder_update --force_update --database {amrfinderplus_db_path}', error code: {proc.returncode}")
55 else: 57 else:
56 return amrfinderplus_db_path 58 return amrfinderplus_db_path
57 59
58 def get_amrfinderplus_version(self, amrfinderplus_path): 60 def get_amrfinderplus_version(self, amrfinderplus_path):
59 version_file = Path(f'{amrfinderplus_path}/latest/version.txt') 61 version_file = Path(f'{amrfinderplus_path}/latest/version.txt')
73 def read_json_input_file(self, json_file_path): 75 def read_json_input_file(self, json_file_path):
74 with open(json_file_path) as fh: 76 with open(json_file_path) as fh:
75 params = json.load(fh) 77 params = json.load(fh)
76 target_dir = params['output_data'][0]['extra_files_path'] 78 target_dir = params['output_data'][0]['extra_files_path']
77 os.makedirs(target_dir) 79 os.makedirs(target_dir)
78 return target_dir 80 return Path(target_dir)
79 81
80 def write_json_infos(self, json_file_path, data_manager_infos): 82 def write_json_infos(self, json_file_path, data_manager_infos):
81 with open(json_file_path, 'w') as fh: 83 with open(json_file_path, 'w') as fh:
82 json.dump(data_manager_infos, fh, sort_keys=True) 84 json.dump(data_manager_infos, fh, sort_keys=True)
83 85
90 # read the json input from galaxy to define the db path 92 # read the json input from galaxy to define the db path
91 path_to_download = amrfinderplus_download.read_json_input_file(json_file_path=all_args.data_manager_json) 93 path_to_download = amrfinderplus_download.read_json_input_file(json_file_path=all_args.data_manager_json)
92 # change the path to th json information 94 # change the path to th json information
93 amrfinderplus_download._db_path = path_to_download 95 amrfinderplus_download._db_path = path_to_download
94 # download the last amrfinderplus database 96 # download the last amrfinderplus database
95 amrfinder_output = amrfinderplus_download.update_amrfinderplus_db(amrfinderplus_download._db_path) 97 amrfinder_output = amrfinderplus_download.update_amrfinderplus_db()
96 # extract the version number of the database 98 # extract the version number of the database
97 amrfinder_version = amrfinderplus_download.get_amrfinderplus_version(amrfinder_output) 99 amrfinder_version = amrfinderplus_download.get_amrfinderplus_version(amrfinder_output)
98 # make a dic with database information 100 # make a dic with database information
99 amrfinderplus_json_output = amrfinderplus_download.get_data_manager(amrfinder_version) 101 amrfinderplus_json_output = amrfinderplus_download.get_data_manager(amrfinder_version)
100 amrfinderplus_download.write_json_infos(json_file_path=all_args.data_manager_json, 102 amrfinderplus_download.write_json_infos(json_file_path=all_args.data_manager_json,