|
26 | 26 | from typing import Iterable |
27 | 27 |
|
28 | 28 | 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, \ |
30 | 31 | generate_serology_mapping, generate_v2_to_v3_mapping |
31 | 32 | from .db import is_valid_mac_code, mac_code_to_alleles, v2_to_v3_allele |
32 | 33 | from .smart_sort import smart_sort_comparator |
@@ -63,7 +64,7 @@ def __init__(self, imgt_version: str = 'Latest', |
63 | 64 | # Load Alleles and XX Codes |
64 | 65 | self.valid_alleles, self.xx_codes = generate_alleles_and_xx_codes(self.db_connection, imgt_version) |
65 | 66 | # 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) |
67 | 68 | # Load Serology mappings |
68 | 69 | generate_serology_mapping(self.db_connection, imgt_version) |
69 | 70 | # Load V2 to V3 mappings |
@@ -111,25 +112,25 @@ def redux(self, allele: str, ars_type: str) -> str: |
111 | 112 | if allele.endswith(('P', 'G')): |
112 | 113 | allele = allele[:-1] |
113 | 114 |
|
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] |
117 | 118 | else: |
118 | | - return self._G[allele] |
| 119 | + return self.ars_mappings.g_group[allele] |
119 | 120 | 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] |
124 | 125 | else: |
125 | 126 | # for 'lg' when allele is not in G group, |
126 | 127 | # return allele with only first 2 field |
127 | 128 | return ':'.join(allele.split(':')[0:2]) + 'g' |
128 | 129 | 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] |
133 | 134 | else: |
134 | 135 | # for 'lgx' when allele is not in G group, |
135 | 136 | # return allele with only first 2 field |
@@ -300,7 +301,8 @@ def _get_alleles_from_serology(self, serology) -> Iterable[str]: |
300 | 301 | else: |
301 | 302 | return alleles |
302 | 303 |
|
303 | | - def _combine_with_colon(self, digits_field): |
| 304 | + @staticmethod |
| 305 | + def _combine_with_colon(digits_field): |
304 | 306 | num_of_digits = len(digits_field) |
305 | 307 | return ':'.join(digits_field[i:i + 2] for i in range(0, num_of_digits, 2)) |
306 | 308 |
|
@@ -428,11 +430,11 @@ def toG(self, allele: str) -> str: |
428 | 430 | :return: ARS G reduced allele |
429 | 431 | :rtype: str |
430 | 432 | """ |
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] |
434 | 436 | else: |
435 | | - return self._G[allele] |
| 437 | + return self.ars_mappings.g_group[allele] |
436 | 438 | else: |
437 | 439 | return "X" |
438 | 440 |
|
|
0 commit comments