88import requests
99from tabulate import tabulate
1010from tqdm import tqdm
11- from tqdm .contrib .concurrent import thread_map
1211from urllib3 import util
12+ from loguru import logger
13+
14+ from atg .utils import thread_map_parallel
1315
1416# ic.configureOutput(prefix=" -> ")
1517
@@ -45,16 +47,16 @@ def download_url(input_file: Tuple[str, str, Path]) -> None:
4547 shutil .copyfileobj (r_raw , file )
4648
4749 except requests .exceptions .Timeout :
48- print (f"Timeout downloading { fname } . Please retry later." )
50+ logger . error (f"Timeout downloading { fname } . Please retry later." )
4951 raise
5052 except requests .exceptions .HTTPError as e :
51- print (f"HTTP error downloading { fname } : { e } " )
53+ logger . error (f"HTTP error downloading { fname } : { e } " )
5254 raise
5355 except requests .exceptions .ConnectionError :
54- print (f"Connection error downloading { fname } . Please check your internet connection." )
56+ logger . error (f"Connection error downloading { fname } . Please check your internet connection." )
5557 raise
5658 except Exception as e :
57- print (f"Error downloading { fname } : { e } " )
59+ logger . error (f"Error downloading { fname } : { e } " )
5860 raise
5961
6062
@@ -102,10 +104,10 @@ def request_get(api: str, pdict: str, fields: str, safe: str = ",") -> pd.DataFr
102104
103105 return df
104106 except requests .exceptions .Timeout :
105- print ("Connection to the server has timed out. Please retry." )
107+ logger . error ("Connection to the server has timed out. Please retry." )
106108 return None
107109 except requests .exceptions .HTTPError :
108- print ("HTTPError: This is likely caused by an invalid search query" )
110+ logger . error ("HTTPError: This is likely caused by an invalid search query" )
109111 return None
110112
111113
@@ -129,7 +131,7 @@ def ena_fields(id_err: str, save: bool = True, fields: str = "") -> Dict[str, st
129131
130132 if save :
131133 df .to_csv (f"{ id_err } .tsv" , sep = "\t " , index = False )
132- print (f"ENA metadata saved as { id_err } .tsv" )
134+ logger . info (f"ENA metadata saved as { id_err } .tsv" )
133135 else :
134136 pass
135137
@@ -155,8 +157,7 @@ def md5_hash(filename, block_size=2**20):
155157
156158def thread_map_urls (url_dict : Dict [str , str ], outdir : Path , cpu : int ) -> None :
157159 iter_url = [(k , v , outdir ) for k , v in url_dict .items ()]
158- if len (iter_url ) > 0 :
159- thread_map (download_url , iter_url , max_workers = cpu )
160+ thread_map_parallel (download_url , iter_url , cpu )
160161
161162
162163def checksums (id_err : str , output_dir : Path , file_lst : List [str ], threads : int ) -> None :
@@ -179,7 +180,7 @@ def compare_lists(df_md5: pd.DataFrame, test_list: List[str], outdir: Path, n_cp
179180 md5_failed = [k for k , v in urls_dict .items () if v [0 ] != md5_hash (output_dir / k )]
180181
181182 if compare_lists (dfmd5 , md5_failed , output_dir , threads ) is None :
182- print ("All files are already downloaded" )
183+ logger . info ("All files are already downloaded" )
183184
184185
185186def ena_search (
@@ -192,7 +193,7 @@ def ena_search(
192193 df = request_get ("browser/api/tsv/textsearch" , params , fields = "all" , safe = safe )
193194
194195 if df .empty :
195- print ("Check your query" )
196+ logger . error ("Check your query" )
196197
197198 return df
198199
@@ -207,14 +208,14 @@ def ena_retrieve(keywords: str, save: bool, only_ids: bool):
207208
208209 if save and not only_ids :
209210 df .to_csv (f"{ keywords } .tsv" , sep = "\t " , index = False )
210- print (f"ENA metadata saved as { keywords } .tsv" )
211+ logger . info (f"ENA metadata saved as { keywords } .tsv" )
211212 elif only_ids and not save :
212- print (tabulate (df [["accession" ]], headers = "keys" , showindex = False ))
213+ logger . info (tabulate (df [["accession" ]], headers = "keys" , showindex = False ))
213214 elif only_ids and save :
214215 df ["accession" ].to_csv (f"{ keywords } _ids.tsv" , index = False , header = False )
215- print (f"ENA metadata saved as { keywords } _ids.tsv" )
216+ logger . info (f"ENA metadata saved as { keywords } _ids.tsv" )
216217 else :
217- print (tabulate (df , headers = "keys" , showindex = False , tablefmt = "plain" ))
218+ logger . info (tabulate (df , headers = "keys" , showindex = False , tablefmt = "plain" ))
218219
219220
220221def ena_download (bioproject : str , cpus : int , fields : str = None , output_base_dir : Path = None ) -> None :
@@ -230,7 +231,7 @@ def ena_download(bioproject: str, cpus: int, fields: str = None, output_base_dir
230231 files = [x .name for x in Path .glob (out_dir , "*.fastq.gz" )]
231232
232233 if len (files ) > 0 :
233- print ("Verifying MD5 File Checksums..." )
234+ logger . info ("Verifying MD5 File Checksums..." )
234235 checksums (err_id , out_dir , files , cpus )
235236 else :
236237 err_urls = ena_urls (ena_fields (id_err = err_id , fields = fields ))
0 commit comments