code: def _map(self, from_pos, to_pos, pos, base):
          
          pos_i = -1
          while pos_i < len(self.cigar_op) and pos >= from_pos[pos_i + 1]:
              pos_i += 1
  
          if pos_i == -1 or pos_i == len(self.cigar_op):
              raise HGVSInvalidIntervalError("Position is beyond the bounds of transcript record")
  
          if self.cigar_op[pos_i] in "=MX":
              mapped_pos = to_pos[pos_i] + (pos - from_pos[pos_i])
              mapped_pos_offset = 0
          elif self.cigar_op[pos_i] in "DI":
              if base == "start":
                  mapped_pos = to_pos[pos_i] - 1
              elif base == "end":
                  mapped_pos = to_pos[pos_i]
              mapped_pos_offset = 0
          elif self.cigar_op[pos_i] == "N":
              if pos - from_pos[pos_i] + 1 <= from_pos[pos_i + 1] - pos:
                  mapped_pos = to_pos[pos_i] - 1
                  mapped_pos_offset = pos - from_pos[pos_i] + 1
              else:
                  mapped_pos = to_pos[pos_i]
                  mapped_pos_offset = -(from_pos[pos_i + 1] - pos)
  
          return mapped_pos, mapped_pos_offset, self.cigar_op[pos_i]
docs: Map position between aligned sequences
  
          Positions in this function are 0-based.