Skip to content

Commit 622625b

Browse files
authored
Merge pull request #242 from pbashyal-nmdp/fix_allele_validation
Fix allele validation
2 parents be5cb08 + ce37a6e commit 622625b

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

pyard/ard.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,6 @@ def _redux_allele(
171171
:rtype: str
172172
"""
173173

174-
validate_reduction_type(redux_type)
175-
176174
# deal with leading 'HLA-'
177175
if HLA_regex.search(allele):
178176
hla, allele_name = allele.split("-")
@@ -646,14 +644,18 @@ def _is_valid(self, allele: str) -> bool:
646644
if allele.endswith(("P", "G")):
647645
# remove the last character
648646
allele = allele[:-1]
649-
if self._is_valid_allele(allele):
650-
return True
651-
else:
652-
allele = get_2field_allele(allele)
653-
if self._is_valid_allele(allele):
654-
return True
647+
# validate format: there are no empty fields eg, 2 :: together
648+
if "*" in allele:
649+
_, fields = allele.split("*")
650+
if not all(map(str.isalnum, fields.split(":"))):
651+
return False
652+
# The allele is valid as whole or as a 2 field version
653+
if self._is_valid_allele(allele):
654+
return True
655+
else:
656+
allele = get_2field_allele(allele)
657+
return self._is_valid_allele(allele)
655658

656-
return self._is_valid_allele(allele)
657659
return True
658660

659661
def _is_valid_gl(self, glstring: str) -> bool:

tests/test_pyard.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ def test_fp_allele(self):
142142
with self.assertRaises(InvalidTypingError):
143143
self.ard.redux("A*0.123", "lgx")
144144

145+
def test_empty_fields(self):
146+
with self.assertRaises(InvalidTypingError):
147+
# : without any data
148+
self.ard.redux("DQA1*01:01:01:G", "lgx")
149+
145150
def test_invalid_serology(self):
146151
# Test that A10 works and the first one is 'A*25:01'
147152
serology_a10 = self.ard.redux("A10", "lgx")

0 commit comments

Comments
 (0)