def find_pep_change(self, refseq): """Finds effect on protein sequence given event""" if self.event_type == 'novel_transcript': return self.longest_orf() coord = re.split('[:-]', self.coordinate()) variant = None if self.event_type == 'novel_utr': # include the block that's 'matching' (partially) if min(self.align_blocks) == 1: b1 = self.align_blocks[0] b2 = self.align_blocks[-1] + 1 else: b1 = self.align_blocks[0] - 1 b2 = self.align_blocks[-1] qcoord1 = self.align.query_blocks[b1-1][0] qcoord2 = self.align.query_blocks[b2-1][1] else: qcoord1 = self.align.query_blocks[self.align_blocks[0]-1][0] qcoord2 = self.align.query_blocks[self.align_blocks[-1]-1][1] if qcoord1 < qcoord2: variant = self.align.contig.sequence[qcoord1-1:qcoord2] else: variant = self.align.contig.sequence[qcoord2-1:qcoord1] variant = reverse_complement(variant) # constructs cDNA sequence of both reference and sequence with event cdna_original = self.construct_cdna(coord, self.txt, refseq) cdna_changed = self.construct_cdna(coord, self.txt, refseq, variant=variant, change=self.event_type, exons=self.exons) frame = 0 if self.event_type == 'novel_utr': frame = None if self.txt.strand == '+': pep_original = translate(cdna_original, orient='+', frame=0) pep_changed = translate(cdna_changed, orient='+', frame=frame) else: pep_original = translate(cdna_original, orient='-', frame=0) pep_changed = translate(cdna_changed, orient='-', frame=frame) if not pep_changed or not pep_original or self.event_type == 'read-through': return 'na' self.orf = pep_change(pep_original, pep_changed)
def find_pep_change(self, coord, txt, refseq, variant, change): """Finds peptide change due to variant""" cdna_original = self.construct_cdna(coord, txt, refseq) cdna_changed = self.construct_cdna(coord, txt, refseq, variant, change) if txt.strand == '+': pep_original = translate(cdna_original, orient='+', frame=0) pep_changed = translate(cdna_changed, orient='+', frame=0) else: pep_original = translate(cdna_original, orient='-', frame=0) pep_changed = translate(cdna_changed, orient='-', frame=0) if not pep_changed or not pep_original: return 'na' mutation = pep_change(pep_original, pep_changed) return mutation