Skip to content

Commit 7fb7f8e

Browse files
committed
Read dup_* tables when db already exists.
Collapse all ars mapping to ARSMapping tuple
1 parent 8985ae3 commit 7fb7f8e

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

pyard/pyard.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
from typing import Iterable
2727

2828
from . import db
29-
from .data_repository import generate_ars_mapping, generate_mac_codes, generate_alleles_and_xx_codes, \
29+
from .data_repository import generate_ars_mapping, \
30+
generate_mac_codes, generate_alleles_and_xx_codes, \
3031
generate_serology_mapping, generate_v2_to_v3_mapping
3132
from .db import is_valid_mac_code, mac_code_to_alleles, v2_to_v3_allele
3233
from .smart_sort import smart_sort_comparator
@@ -63,7 +64,7 @@ def __init__(self, imgt_version: str = 'Latest',
6364
# Load Alleles and XX Codes
6465
self.valid_alleles, self.xx_codes = generate_alleles_and_xx_codes(self.db_connection, imgt_version)
6566
# Load ARS mappings
66-
self.dup_g, self.dup_lg, self.dup_lgx, self._G, self._lg, self._lgx = generate_ars_mapping(self.db_connection, imgt_version)
67+
self.ars_mappings = generate_ars_mapping(self.db_connection, imgt_version)
6768
# Load Serology mappings
6869
generate_serology_mapping(self.db_connection, imgt_version)
6970
# Load V2 to V3 mappings
@@ -111,25 +112,25 @@ def redux(self, allele: str, ars_type: str) -> str:
111112
if allele.endswith(('P', 'G')):
112113
allele = allele[:-1]
113114

114-
if ars_type == "G" and allele in self._G:
115-
if allele in self.dup_g:
116-
return self.dup_g[allele]
115+
if ars_type == "G" and allele in self.ars_mappings.g_group:
116+
if allele in self.ars_mappings.dup_g:
117+
return self.ars_mappings.dup_g[allele]
117118
else:
118-
return self._G[allele]
119+
return self.ars_mappings.g_group[allele]
119120
elif ars_type == "lg":
120-
if allele in self.dup_lg:
121-
return self.dup_lg[allele]
122-
elif allele in self._lg:
123-
return self._lg[allele]
121+
if allele in self.ars_mappings.dup_lg:
122+
return self.ars_mappings.dup_lg[allele]
123+
elif allele in self.ars_mappings.lg_group:
124+
return self.ars_mappings.lg_group[allele]
124125
else:
125126
# for 'lg' when allele is not in G group,
126127
# return allele with only first 2 field
127128
return ':'.join(allele.split(':')[0:2]) + 'g'
128129
elif ars_type == "lgx":
129-
if allele in self.dup_lgx:
130-
return self.dup_lgx[allele]
131-
elif allele in self._lgx:
132-
return self._lgx[allele]
130+
if allele in self.ars_mappings.dup_lgx:
131+
return self.ars_mappings.dup_lgx[allele]
132+
elif allele in self.ars_mappings.lgx_group:
133+
return self.ars_mappings.lgx_group[allele]
133134
else:
134135
# for 'lgx' when allele is not in G group,
135136
# return allele with only first 2 field
@@ -300,7 +301,8 @@ def _get_alleles_from_serology(self, serology) -> Iterable[str]:
300301
else:
301302
return alleles
302303

303-
def _combine_with_colon(self, digits_field):
304+
@staticmethod
305+
def _combine_with_colon(digits_field):
304306
num_of_digits = len(digits_field)
305307
return ':'.join(digits_field[i:i + 2] for i in range(0, num_of_digits, 2))
306308

@@ -428,11 +430,11 @@ def toG(self, allele: str) -> str:
428430
:return: ARS G reduced allele
429431
:rtype: str
430432
"""
431-
if allele in self._G:
432-
if allele in self.dup_g:
433-
return self.dup_g[allele]
433+
if allele in self.ars_mappings.g_group:
434+
if allele in self.ars_mappings.dup_g:
435+
return self.ars_mappings.dup_g[allele]
434436
else:
435-
return self._G[allele]
437+
return self.ars_mappings.g_group[allele]
436438
else:
437439
return "X"
438440

0 commit comments

Comments
 (0)