def c_to_n(self, c_interval):
if self.cds_start_i is None:    <EOL><INDENT>raise HGVSUsageError(<EOL>"<STR_LIT>"<EOL>.format(self=self))<EOL><DEDENT>if c_interval.start.datum == Datum.CDS_START and c_interval.start.base < <NUM_LIT:0>:<EOL><INDENT>r_start = c_interval.start.base + self.cds_start_i + <NUM_LIT:1><EOL><DEDENT>elif c_interval.start.datum == Datum.CDS_START and c_interval.start.base > <NUM_LIT:0>:<EOL><INDENT>r_start = c_interval.start.base + self.cds_start_i<EOL><DEDENT>elif c_interval.start.datum == Datum.CDS_END:<EOL><INDENT>r_start = c_interval.start.base + self.cds_end_i<EOL><DEDENT>if c_interval.end.datum == Datum.CDS_START and c_interval.end.base < <NUM_LIT:0>:<EOL><INDENT>r_end = c_interval.end.base + self.cds_start_i + <NUM_LIT:1><EOL><DEDENT>elif c_interval.end.datum == Datum.CDS_START and c_interval.end.base > <NUM_LIT:0>:<EOL><INDENT>r_end = c_interval.end.base + self.cds_start_i<EOL><DEDENT>elif c_interval.end.datum == Datum.CDS_END:<EOL><INDENT>r_end = c_interval.end.base + self.cds_end_i<EOL><DEDENT>if r_start <= <NUM_LIT:0> or r_end > self.tgt_len:<EOL><INDENT>raise HGVSInvalidIntervalError(<EOL>"<STR_LIT>")<EOL><DEDENT>n_interval = hgvs.location.BaseOffsetInterval(<EOL>start=hgvs.location.BaseOffsetPosition(<EOL>base=r_start, offset=c_interval.start.offset, datum=Datum.SEQ_START),<EOL>end=hgvs.location.BaseOffsetPosition(<EOL>base=r_end, offset=c_interval.end.offset, datum=Datum.SEQ_START),<EOL>uncertain=c_interval.uncertain)<EOL>return n_interval<EOL>
convert a transcript CDS (c.) interval to a transcript cDNA (n.) interval