Skip to content

Commit e9bf6c5

Browse files
committed
Fix ping mode for all
- When in `ping` mode, Alleles that were not already in `lgx` mode were not reduced properly. For those alleles educe to `lgx` first.
1 parent 9e42286 commit e9bf6c5

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

pyard/ard.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,11 +206,20 @@ def _redux_allele(
206206
if redux_type in ["lg", "lgx", "G"]:
207207
allele = allele[:-1]
208208
if self._config["ping"] and re_ping:
209+
# ping: alleles that are in P group but not in G groups are defined
210+
# for 2-field alleles. If not already in 2-field form, reduce it to
211+
# 2-field version first then re-reduce it to P group.
209212
if redux_type in ("lg", "lgx", "U2"):
210213
if allele in self.ars_mappings.p_not_g:
211214
return self.ars_mappings.p_not_g[allele]
212215
else:
213-
return self._redux_allele(allele, redux_type, False)
216+
redux_allele = self._redux_allele(allele, redux_type, False)
217+
if (
218+
redux_allele == allele
219+
or redux_allele in self.ars_mappings.p_not_g.values()
220+
):
221+
return redux_allele
222+
return self._redux_allele(redux_allele, "lgx", True)
214223

215224
if redux_type == "G" and allele in self.ars_mappings.g_group:
216225
if allele in self.ars_mappings.dup_g:

0 commit comments

Comments
 (0)