Skip to content

Commit d6ae458

Browse files
committed
Merge remote-tracking branch 'origin/no-pandas' into no-pandas
2 parents faca054 + 737ea60 commit d6ae458

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

pyard/loader/allele_list.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from urllib.request import urlopen
2+
from urllib.error import URLError
3+
import csv
4+
import sys
5+
from ..simple_table import Table
6+
from ..loader import IMGT_HLA_URL
7+
8+
9+
def load_allele_list(imgt_version):
10+
"""
11+
The format of the AlleleList file has a 6-line header with a header
12+
on the 7th line
13+
```
14+
# file: Allelelist.3290.txt
15+
# date: 2017-07-10
16+
# version: IPD-IMGT/HLA 3.29.0
17+
# origin: https://github.com/ANHIG/IMGTHLA/Allelelist.3290.txt
18+
# repository: https://raw.githubusercontent.com/ANHIG/IMGTHLA/Latest/allelelist/Allelelist.3290.txt
19+
# author: WHO, Steven G. E. Marsh ([email protected])
20+
AlleleID,Allele
21+
HLA00001,A*01:01:01:01
22+
HLA02169,A*01:01:01:02N
23+
HLA14798,A*01:01:01:03
24+
HLA15760,A*01:01:01:04
25+
HLA16415,A*01:01:01:05
26+
HLA16417,A*01:01:01:06
27+
HLA16436,A*01:01:01:07
28+
```
29+
30+
Returns a Table object with AlleleID and Allele columns
31+
32+
:param imgt_version: IMGT database version
33+
:return: Table object with AlleleID and Allele data
34+
"""
35+
36+
if imgt_version == "Latest":
37+
allele_list_url = f"{IMGT_HLA_URL}Latest/Allelelist.txt"
38+
else:
39+
if imgt_version == "3130":
40+
# 3130 was renamed to 3131 for Allelelist file only 🤷🏾
41+
imgt_version = "3131"
42+
allele_list_url = (
43+
f"{IMGT_HLA_URL}Latest/allelelist/Allelelist.{imgt_version}.txt"
44+
)
45+
46+
try:
47+
response = urlopen(allele_list_url)
48+
lines = [line.decode("utf-8").strip() for line in response]
49+
50+
# Skip first 6 header lines
51+
data_lines = lines[6:]
52+
53+
reader = csv.DictReader(data_lines)
54+
columns = ["AlleleID", "Allele"]
55+
56+
return Table(reader, columns)
57+
except URLError as e:
58+
print(f"Error downloading {allele_list_url}", e, file=sys.stderr)
59+
sys.exit(1)

0 commit comments

Comments
 (0)