comparison data_manager/bakta_build_database.py @ 6:97b1b5ad1cda draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/data_managers/data_manager_build_bakta_database commit e0ce56ac52cff0e8f85e546440d28ca46853b11d
author iuc
date Thu, 20 Jun 2024 19:13:58 +0000
parents baceff842902
children
comparison
equal deleted inserted replaced
5:baceff842902 6:97b1b5ad1cda
133 def download(self): 133 def download(self):
134 bakta_path = Path(self.db_dir).joinpath(self.tar_name) 134 bakta_path = Path(self.db_dir).joinpath(self.tar_name)
135 try: 135 try:
136 with bakta_path.open("wb") as fh_out, requests.get( 136 with bakta_path.open("wb") as fh_out, requests.get(
137 self.db_url, stream=True) as resp: 137 self.db_url, stream=True) as resp:
138 total_length = resp.headers.get("content-length") 138 # total_length = resp.headers.get("content-length")
139 if total_length is None: # no content length header 139 for data in resp.iter_content(chunk_size=1024 * 1024):
140 for data in resp.iter_content(chunk_size=1024 * 1024): 140 fh_out.write(data)
141 fh_out.write(data)
142 else:
143 for data in resp.iter_content(chunk_size=1024 * 1024):
144 fh_out.write(data)
145 print(f"Download bakta database {self.db_version}") 141 print(f"Download bakta database {self.db_version}")
146 self.tarball_path = bakta_path 142 self.tarball_path = bakta_path
147 except IOError: 143 except IOError:
148 print( 144 print(
149 f"ERROR: Could not download file from Zenodo!" 145 f"ERROR: Could not download file from Zenodo!"
156 with self.tarball_path.open("rb") as fh_in, tarfile.open( 152 with self.tarball_path.open("rb") as fh_in, tarfile.open(
157 fileobj=fh_in, mode="r:gz" 153 fileobj=fh_in, mode="r:gz"
158 ) as tar_file: 154 ) as tar_file:
159 tar_file.extractall(path=db_path) 155 tar_file.extractall(path=db_path)
160 print(f"Untar the database in {db_path}") 156 print(f"Untar the database in {db_path}")
161
162 if not self.test_mode:
163 self.move_files(db_path=db_path)
164
165 except OSError: 157 except OSError:
166 sys.exit(f"ERROR: Could not extract {self.tar_name} " f"to {db_path}") 158 sys.exit(f"ERROR: Could not extract {self.tar_name} " f"to {db_path}")
159 if not self.test_mode:
160 self.move_files(db_path=db_path)
161 self.db_dir = db_path.resolve()
162
163 def delete_folder(self, path):
164 for sub in path.iterdir():
165 if sub.is_dir() and sub.name != "latest":
166 self.delete_folder(sub)
167 else:
168 sub.unlink()
169 path.rmdir()
167 170
168 def move_files(self, db_path): 171 def move_files(self, db_path):
169 if db_path.joinpath("db-light").is_dir(): 172 if db_path.joinpath("db-light").is_dir():
170 input_dir = db_path.joinpath("db-light") 173 input_dir = db_path.joinpath("db-light")
171 elif db_path.joinpath("db").is_dir(): 174 elif db_path.joinpath("db").is_dir():
172 input_dir = db_path.joinpath("db") 175 input_dir = db_path.joinpath("db")
173 output_dir = db_path 176 output_dir = db_path
174 for file in input_dir.iterdir(): 177 for file in input_dir.iterdir():
175 if file.is_file(): # to avoid moving amrfinder-plus folder 178 if file.is_file(): # to avoid moving amrfinder-plus folder
176 input = input_dir.joinpath(file) 179 output = output_dir.joinpath(file.name)
177 output = output_dir.joinpath(file) 180 file.rename(output)
178 input.rename(output) 181 self.delete_folder(input_dir)
179 182
180 def calc_md5_sum(self, buffer_size=1048576): 183 def calc_md5_sum(self, buffer_size=1048576):
181 tarball_path = Path(self.db_dir).joinpath(self.tar_name) 184 tarball_path = Path(self.db_dir).joinpath(self.tar_name)
182 md5 = hashlib.md5() 185 md5 = hashlib.md5()
183 with tarball_path.open("rb") as fh: 186 with tarball_path.open("rb") as fh: