Skip to content

Commit 670b5c1

Browse files
Little g alleles are valid in only non-strict mode (#375)
* Little g alleles are not valid nomenclature. Allow validation of little-g alleles when in non-strict mode. * Little g alleles are not valid nomenclature. Allow validation of little-g alleles when in non-strict mode.
1 parent 59cba83 commit 670b5c1

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

pyard/ard.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,9 @@ def _is_allele_in_db(self, allele: str) -> bool:
346346
return allele in self.allele_group.alleles
347347

348348
def is_valid_allele(self, allele: str) -> bool:
349-
if allele.endswith(("P", "G", "g")):
349+
if allele.endswith(("P", "G")):
350+
allele = allele[:-1]
351+
if not self.config.strict and allele.endswith("g"):
350352
allele = allele[:-1]
351353
if "*" in allele:
352354
_, fields = allele.split("*")

tests/features/allele.feature

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,21 @@ Feature: Alleles
5858
| A*24:329 | lgx | A*24:329Q |
5959
| DQB1*03:276 | lgx | DQB1*03:01 |
6060

61+
Scenario Outline: Allele validation in strict mode
62+
63+
liggle g alleles are valid in non-strict mode
64+
65+
Given the allele as <Allele>
66+
When checking for validity of the allele in strict mode
67+
Then the validness of the allele is <Validity>
68+
69+
Examples:
70+
| Allele | Validity |
71+
| A*24:329 | InValid |
72+
| DRBX*NNNN | Invalid |
73+
| A*30:02g | Invalid |
74+
| HLA-A*01:04Ng | Invalid |
75+
6176
Scenario Outline: Allele validation in non-strict mode
6277

6378
Similar to reduction, handle non-strict mode when validating an allele.
@@ -69,10 +84,12 @@ Feature: Alleles
6984
Then the validness of the allele is <Validity>
7085

7186
Examples:
72-
| Allele | Validity |
73-
| A*11:403 | Invalid |
74-
| A*24:329 | Valid |
75-
| DRBX*NNNN | Invalid |
87+
| Allele | Validity |
88+
| A*11:403 | Invalid |
89+
| A*24:329 | Valid |
90+
| DRBX*NNNN | Invalid |
91+
| A*30:02g | Valid |
92+
| HLA-A*01:04Ng | Valid |
7693

7794
Scenario Outline: Single field MICA, MICB Alleles
7895

@@ -131,10 +148,10 @@ Feature: Alleles
131148

132149
Scenario Outline: Alleles with 'g' suffix
133150

134-
Alleles with 'g' suffix are valid alleles
151+
Alleles with 'g' suffix are valid alleles in non-strict mode
135152

136153
Given the allele as <Allele>
137-
When reducing on the <Level> level
154+
When reducing on the <Level> level in non-strict mode
138155
Then the reduced allele is found to be <Redux Allele>
139156

140157
Examples:

tests/features/p_g_group.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,4 @@ Feature: P and G Groups
9797
| DQA1*03:03 | lgx | DQA1*03:01 |
9898
| DQA1*03:03 | lg | DQA1*03:01g |
9999
| DQA1*03:03:09 | lgx | DQA1*03:01 |
100-
| DQA1*03:03:09 | lg | DQA1*03:01g |
100+
| DQA1*03:03:09 | lg | DQA1*03:03g |

tests/steps/redux_allele.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@ def step_impl(context):
134134
context.is_valid = False
135135

136136

137+
@when("checking for validity of the allele in strict mode")
138+
def step_impl(context):
139+
try:
140+
context.is_valid = context.ard.validate(context.allele)
141+
except InvalidAlleleError:
142+
context.is_valid = False
143+
144+
137145
@when("reducing on the {level} level in ignore_suffix mode")
138146
def step_impl(context, level):
139147
context.level = level

0 commit comments

Comments
 (0)