11import sys
22from typing import Dict , List
3- from urllib .error import HTTPError
3+ from urllib .error import URLError
44
55from pyard .misc import get_G_name , get_2field_allele , get_3field_allele , get_P_name
66
@@ -21,14 +21,18 @@ def load_serology_broad_split_mapping(imgt_version: str) -> Dict:
2121 import pandas as pd
2222
2323 ser_ser_url = f"{ IMGT_HLA_URL } { imgt_version } /wmda/rel_ser_ser.txt"
24- df_p = pd .read_csv (
25- ser_ser_url ,
26- skiprows = 6 ,
27- names = ["Locus" , "A" , "Splits" , "Associated" ],
28- usecols = [0 , 1 , 2 ],
29- dtype = "string" ,
30- sep = ";" ,
31- ).dropna ()
24+ try :
25+ df_p = pd .read_csv (
26+ ser_ser_url ,
27+ skiprows = 6 ,
28+ names = ["Locus" , "A" , "Splits" , "Associated" ],
29+ usecols = [0 , 1 , 2 ],
30+ dtype = "string" ,
31+ sep = ";" ,
32+ ).dropna ()
33+ except URLError as e :
34+ print (f"Error downloading { ser_ser_url } " , e , file = sys .stderr )
35+ sys .exit (1 )
3236
3337 df_p ["Sero" ] = df_p ["Locus" ] + df_p ["A" ]
3438 df_p ["Splits" ] = df_p [["Locus" , "Splits" ]].apply (
@@ -44,7 +48,14 @@ def load_g_group(imgt_version):
4448
4549 # load the hla_nom_g.txt
4650 ars_g_url = f"{ IMGT_HLA_URL } { imgt_version } /wmda/hla_nom_g.txt"
47- df = pd .read_csv (ars_g_url , skiprows = 6 , names = ["Locus" , "A" , "G" ], sep = ";" ).dropna ()
51+ try :
52+ df = pd .read_csv (
53+ ars_g_url , skiprows = 6 , names = ["Locus" , "A" , "G" ], sep = ";"
54+ ).dropna ()
55+ except URLError as e :
56+ print (f"Error downloading { ars_g_url } " , e , file = sys .stderr )
57+ sys .exit (1 )
58+
4859 # the G-group is named for its first allele
4960 df ["G" ] = df ["A" ].apply (get_G_name )
5061 # convert slash delimited string to a list
@@ -69,9 +80,14 @@ def load_p_group(imgt_version):
6980 # load the hla_nom_p.txt
7081 ars_p_url = f"{ IMGT_HLA_URL } { imgt_version } /wmda/hla_nom_p.txt"
7182 # example: C*;06:06:01:01/06:06:01:02/06:271;06:06P
72- df_p = pd .read_csv (
73- ars_p_url , skiprows = 6 , names = ["Locus" , "A" , "P" ], sep = ";"
74- ).dropna ()
83+ try :
84+ df_p = pd .read_csv (
85+ ars_p_url , skiprows = 6 , names = ["Locus" , "A" , "P" ], sep = ";"
86+ ).dropna ()
87+ except URLError as e :
88+ print (f"Error downloading { ars_p_url } " , e , file = sys .stderr )
89+ sys .exit (1 )
90+
7591 # the P-group is named for its first allele
7692 df_p ["P" ] = df_p ["A" ].apply (get_P_name )
7793 # convert slash delimited string to a list
@@ -131,12 +147,10 @@ def load_allele_list(imgt_version):
131147
132148 try :
133149 allele_df = pd .read_csv (allele_list_url , header = 6 , usecols = ["Allele" ])
134- except HTTPError as e :
135- print (
136- f"Failed importing alleles for version { imgt_version } from { allele_list_url } " ,
137- file = sys .stderr ,
138- )
150+ except URLError as e :
151+ print (f"Error downloading { allele_list_url } " , e , file = sys .stderr )
139152 sys .exit (1 )
153+
140154 return allele_df
141155
142156
@@ -158,13 +172,18 @@ def load_serology_mappings(imgt_version):
158172 # Load WMDA serology mapping data from URL
159173 import pandas as pd
160174
161- df_sero = pd .read_csv (
162- rel_dna_ser_url ,
163- sep = ";" ,
164- skiprows = 6 ,
165- names = ["Locus" , "Allele" , "USA" , "PSA" , "ASA" , "EAE" ],
166- index_col = False ,
167- )
175+ try :
176+ df_sero = pd .read_csv (
177+ rel_dna_ser_url ,
178+ sep = ";" ,
179+ skiprows = 6 ,
180+ names = ["Locus" , "Allele" , "USA" , "PSA" , "ASA" , "EAE" ],
181+ index_col = False ,
182+ )
183+ except URLError as e :
184+ print (f"Error downloading { rel_dna_ser_url } " , e , file = sys .stderr )
185+ sys .exit (1 )
186+
168187 return df_sero
169188
170189
@@ -214,23 +233,34 @@ def load_mac_codes():
214233 mac_url = "https://hml.nmdp.org/mac/files/numer.v3.zip"
215234 import pandas as pd
216235
217- df_mac = pd .read_csv (
218- mac_url ,
219- sep = "\t " ,
220- compression = "zip" ,
221- skiprows = 3 ,
222- names = ["Code" , "Alleles" ],
223- keep_default_na = False ,
224- )
236+ try :
237+ df_mac = pd .read_csv (
238+ mac_url ,
239+ sep = "\t " ,
240+ compression = "zip" ,
241+ skiprows = 3 ,
242+ names = ["Code" , "Alleles" ],
243+ keep_default_na = False ,
244+ )
245+ except URLError as e :
246+ print (f"Error downloading { mac_url } " , e , file = sys .stderr )
247+ sys .exit (1 )
248+
225249 return df_mac
226250
227251
228252def load_latest_version ():
229253 from urllib .request import urlopen
230254
231- response = urlopen (
255+ version_txt = (
232256 "https://raw.githubusercontent.com/ANHIG/IMGTHLA/Latest/release_version.txt"
233257 )
258+ try :
259+ response = urlopen (version_txt )
260+ except URLError as e :
261+ print (f"Error downloading { version_txt } " , e , file = sys .stderr )
262+ sys .exit (1 )
263+
234264 version = 0
235265 for line in response :
236266 l = line .decode ("utf-8" )
0 commit comments