code: def g_to_n(self, g_interval):
          
  
          grs, gre = g_interval.start.base - 1 - self.gc_offset, g_interval.end.base - 1 - self.gc_offset
          # frs, fre = (f)orward (r)na (s)tart & (e)nd; forward w.r.t. genome
          frs, frs_offset, frs_cigar = self._map(
              from_pos=self.ref_pos, to_pos=self.tgt_pos, pos=grs, base="start")
          fre, fre_offset, fre_cigar = self._map(
              from_pos=self.ref_pos, to_pos=self.tgt_pos, pos=gre, base="end")
  
          if self.strand == -1:
              frs, fre = self.tgt_len - fre - 1, self.tgt_len - frs - 1
              frs_offset, fre_offset = -fre_offset, -frs_offset
  
          # The returned interval would be uncertain when locating at alignment gaps
          return hgvs.location.BaseOffsetInterval(
              start=hgvs.location.BaseOffsetPosition(
                  base=frs + 1, offset=frs_offset, datum=Datum.SEQ_START),
              end=hgvs.location.BaseOffsetPosition(
                  base=fre + 1, offset=fre_offset, datum=Datum.SEQ_START),
              uncertain=frs_cigar in 'DI' or fre_cigar in 'DI')
docs: convert a genomic (g.) interval to a transcript cDNA (n.) interval