From 793683cf677eda3701e3771940e564e3e19af48c Mon Sep 17 00:00:00 2001 From: Manuel Holtgrewe Date: Sat, 21 Oct 2023 16:49:43 +0200 Subject: [PATCH 1/3] fix: projection issue for stop retained insertion (#707) --- src/hgvs/utils/altseq_to_hgvsp.py | 18 +++++++++++++----- tests/data/cache-py3.hdp | Bin 935293 -> 922976 bytes tests/test_hgvs_variantmapper.py | 7 +++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/hgvs/utils/altseq_to_hgvsp.py b/src/hgvs/utils/altseq_to_hgvsp.py index 581cc9ca..20acc17d 100644 --- a/src/hgvs/utils/altseq_to_hgvsp.py +++ b/src/hgvs/utils/altseq_to_hgvsp.py @@ -97,7 +97,8 @@ def build_hgvsp(self): # get size diff from diff in ref/alt lengths start = self._alt_data.variant_start_aa - 1 delta = len(self._alt_seq) - len(self._ref_seq) - while self._ref_seq[start] == self._alt_seq[start]: + start_max = min(len(self._ref_seq), len(self._alt_seq)) + while start < start_max and self._ref_seq[start] == self._alt_seq[start]: start += 1 offset = start + abs(delta) @@ -190,10 +191,17 @@ def _convert_to_sequence_variants(self, variant, acc): self._is_ambiguous = True # side-effect if insertion and insertion.find("*") == 0: # stop codon at variant position - aa_start = aa_end = AAPosition(base=start, aa=deletion[0]) - ref = "" - alt = "*" - is_sub = True + if start == len(self._alt_seq): + # insertion of stop codon at end of sequence, a special case of "stop_retained" + aa_start = aa_end = AAPosition(base=start, aa="*") + ref = "*" + alt = "*" + is_sub = True + else: + aa_start = aa_end = AAPosition(base=start, aa=deletion[0]) + ref = "" + alt = "*" + is_sub = True elif start == len(self._ref_seq): # extension if self._alt_seq[-1] == "*": diff --git a/tests/data/cache-py3.hdp b/tests/data/cache-py3.hdp index 1fbcd59c041e84765b66dd4fbb7838a56777cfac..2ea7bc970773245ab775d20af00ffa5ec389f8db 100644 GIT binary patch delta 1267 zcmYL}J!?~87>3g}ZER};x)i4fF1m!IRcOY;8O{(=G#i^2g#x_Kaf zL7W9we}Iespy1%>>QeB!o;P4V-t)fC$Nk**{f3->9GrdGds{74%hgKNtX8YFs#RU6 z)~k(bv%2_o>uh`F&3WV7ukEe%zw_oWB*_2KdG^XT{T~fbS>Zhg0dxxJcbzaU!?)OF5P1ijeReS4Nfg;=J}4(827U7haDdgR7<)7ZRuKt-&`uf_ ziF8D@0(eP^!Qw@~)XEt-aB)UoDPd2CGC~T7CL=+Y21?W6Zso2|!Cp=wUbDn-s2Qq7 zWt0~wh45MlvzQg`sGYo3ma8?XcjZ!m<9?$VqK-tpi(i;Hj;-(}!YPuRAj#X1;>o*E z5B`i08CImI(pFD|14=TSB_3&$@zV)ck{(z|LOZ;WR2V`~o5!UjF*-p$Ij9)?H=jIA z-dPE@Zn)(Esxa_O&~&g9$)AC8G|KtOAAeeiwcn7Uki$YLAaQhpH$Sr~a5UY|f<^Ko zrUbvlB8GWQBs9#6vyCRBu`q1mhDBhTkJ+-)UG0i+R(4~2Tt|Y5xLCZP=)f|spRL?@ d$Dhe)e)UTG+U55C?f6T&+1uOQ>-Ou{-G3)lZXf^v delta 12231 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 diff --git a/tests/test_hgvs_variantmapper.py b/tests/test_hgvs_variantmapper.py index df90a0a9..7e53acbc 100644 --- a/tests/test_hgvs_variantmapper.py +++ b/tests/test_hgvs_variantmapper.py @@ -37,6 +37,13 @@ def setUpClass(cls): cls.vm = hgvs.variantmapper.VariantMapper(cls.hdp) cls.hp = hgvs.parser.Parser() + def test_map_stop_retained(self): + hgvs_c = "NM_001253909.2:c.416_417insGTG" + var_c = self.hp.parse_hgvs_variant(hgvs_c) + var_p = self.vm.c_to_p(var_c) + + assert str(var_p) == "NP_001240838.1:p.(Ter140Ter)" + def test_gcrp_invalid_input_type(self): hgvs_g = "NC_000007.13:g.36561662C>T" hgvs_c = "NM_001637.3:c.1582G>A" From ae5fe86be59ed757ccb6ca3fd2704b46592588a8 Mon Sep 17 00:00:00 2001 From: Manuel Holtgrewe Date: Wed, 24 Jul 2024 08:21:34 +0200 Subject: [PATCH 2/3] rebase to main, write cache, fix failing test --- src/hgvs/utils/altseq_to_hgvsp.py | 2 +- tests/data/cache-py3.hdp | Bin 922976 -> 936693 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hgvs/utils/altseq_to_hgvsp.py b/src/hgvs/utils/altseq_to_hgvsp.py index 20acc17d..49adc8cb 100644 --- a/src/hgvs/utils/altseq_to_hgvsp.py +++ b/src/hgvs/utils/altseq_to_hgvsp.py @@ -191,7 +191,7 @@ def _convert_to_sequence_variants(self, variant, acc): self._is_ambiguous = True # side-effect if insertion and insertion.find("*") == 0: # stop codon at variant position - if start == len(self._alt_seq): + if start == len(self._alt_seq) and not deletion: # insertion of stop codon at end of sequence, a special case of "stop_retained" aa_start = aa_end = AAPosition(base=start, aa="*") ref = "*" diff --git a/tests/data/cache-py3.hdp b/tests/data/cache-py3.hdp index 2ea7bc970773245ab775d20af00ffa5ec389f8db..97ad36b08f8550166cbd01a71bcb2fc20da1753b 100644 GIT binary patch delta 12249 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 delta 48 zcmex5)$+kAi-s1)7N!>F7M2#)7Pc1l7LFFq7OocV7M?A<55$=({xWQTEY4f~m#I__ E0J+-{j{pDw From b05b2d2907ae3b000a5026ad04234c0e885368a0 Mon Sep 17 00:00:00 2001 From: Manuel Holtgrewe Date: Mon, 29 Jul 2024 13:42:11 +0200 Subject: [PATCH 3/3] Update src/hgvs/utils/altseq_to_hgvsp.py Co-authored-by: Kori Kuzma --- src/hgvs/utils/altseq_to_hgvsp.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/hgvs/utils/altseq_to_hgvsp.py b/src/hgvs/utils/altseq_to_hgvsp.py index 49adc8cb..f47050d4 100644 --- a/src/hgvs/utils/altseq_to_hgvsp.py +++ b/src/hgvs/utils/altseq_to_hgvsp.py @@ -191,17 +191,15 @@ def _convert_to_sequence_variants(self, variant, acc): self._is_ambiguous = True # side-effect if insertion and insertion.find("*") == 0: # stop codon at variant position + is_sub = True + alt = "*" if start == len(self._alt_seq) and not deletion: # insertion of stop codon at end of sequence, a special case of "stop_retained" aa_start = aa_end = AAPosition(base=start, aa="*") ref = "*" - alt = "*" - is_sub = True else: aa_start = aa_end = AAPosition(base=start, aa=deletion[0]) ref = "" - alt = "*" - is_sub = True elif start == len(self._ref_seq): # extension if self._alt_seq[-1] == "*":