Example #1
0
    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)
Example #2
0
    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