Skip to content

Normalized off transcript #766

Open
Open
@davmlaw

Description

@davmlaw

Converting back and forth fails in this case due to being normalized off the transcript

In [1]: var_n = parse("NR_003051.3:n.1_2insAGGACGTG")
In [2]: var_g = n_to_g(var_n)
In [3]: var_g
Out[3]: SequenceVariant(ac=NC_000009.12, type=g, posedit=35658020_35658027dup, gene=None)

In [4]: g_to_n(var_g, "NR_003051.3")
---------------------------------------------------------------------------
HGVSInvalidIntervalError                  Traceback (most recent call last)
Cell In[4], line 1
----> 1 g_to_n(var_g, "NR_003051.3")

File ~/localwork/variantgrid/env/lib/python3.12/site-packages/hgvs/assemblymapper.py:115, in AssemblyMapper.g_to_n(self, var_g, tx_ac)
    114 def g_to_n(self, var_g, tx_ac):
--> 115     var_out = super(AssemblyMapper, self).g_to_n(
    116         var_g, tx_ac, alt_aln_method=self.alt_aln_method
    117     )
    118     return self._maybe_normalize(var_out)

File ~/localwork/variantgrid/env/lib/python3.12/site-packages/hgvs/variantmapper.py:166, in VariantMapper.g_to_n(self, var_g, tx_ac, alt_aln_method)
    163     var_g = self.left_normalizer.normalize(var_g)
    165 var_g.fill_ref(self.hdp)
--> 166 pos_n = mapper.g_to_n(var_g.posedit.pos)
    167 if not pos_n.uncertain:
    168     edit_n = self._convert_edit_check_strand(mapper.strand, var_g.posedit.edit)

File ~/localwork/variantgrid/env/lib/python3.12/site-packages/hgvs/alignmentmapper.py:165, in AlignmentMapper.g_to_n(self, g_interval, strict_bounds)
    160 grs, gre = (
    161     g_interval.start.base - 1 - self.gc_offset,
    162     g_interval.end.base - 1 - self.gc_offset,
    163 )
    164 # frs, fre = (f)orward (r)na (s)tart & (e)nd; forward w.r.t. genome
--> 165 frs, frs_offset, frs_cigar = self.cigarmapper.map_ref_to_tgt(
    166     pos=grs, end="start", strict_bounds=strict_bounds
    167 )
    168 fre, fre_offset, fre_cigar = self.cigarmapper.map_ref_to_tgt(
    169     pos=gre, end="end", strict_bounds=strict_bounds
    170 )
    172 if self.strand == -1:

File ~/localwork/variantgrid/env/lib/python3.12/site-packages/hgvs/utils/cigarmapper.py:59, in CIGARMapper.map_ref_to_tgt(self, pos, end, strict_bounds)
     58 def map_ref_to_tgt(self, pos, end, strict_bounds=True):
---> 59     return self._map(
     60         from_pos=self.ref_pos,
     61         to_pos=self.tgt_pos,
     62         pos=pos,
     63         end=end,
     64         strict_bounds=strict_bounds,
     65     )

File ~/localwork/variantgrid/env/lib/python3.12/site-packages/hgvs/utils/cigarmapper.py:83, in CIGARMapper._map(self, from_pos, to_pos, pos, end, strict_bounds)
     77 """Map position between aligned segments
     78 
     79 Positions in this function are 0-based, base-counting.
     80 """
     82 if strict_bounds and (pos < 0 or pos > from_pos[-1]):
---> 83     raise HGVSInvalidIntervalError("Position is beyond the bounds of transcript record")
     85 # find aligned segment to use as basis for mapping
     86 # okay for pos to be before first element or after last
     87 for pos_i in range(len(self.cigar_op)):

HGVSInvalidIntervalError: Position is beyond the bounds of transcript record

NC_000009.12:g.35658020_35658027dup is off the transcript:

exon = hdp.get_tx_exons("NR_003051.3", "NC_000009.12", "splign")[0]
In [5]: exon["alt_start_i"], exon["alt_end_i"]
Out[5]: (35657750, 35658018)

Even if you 5p normalize NC_000009.12:g.35658020_35658027dup, it ends up as NC_000009.12:g.35658018_35658025dup (still off transcript)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions