Source code for pyGeno.Protein

from . import configuration as conf

from .pyGenoObjectBases import *
from .SNP import SNP_INDEL

import rabaDB.fields as rf

from .tools import UsefulFunctions as uf
from .tools.BinarySequence import AABinarySequence
import copy

[docs]class Protein_Raba(pyGenoRabaObject) : """The wrapped Raba object that really holds the data""" _raba_namespace = conf.pyGeno_RABA_NAMESPACE id = rf.Primitive() name = rf.Primitive() genome = rf.RabaObject('Genome_Raba') chromosome = rf.RabaObject('Chromosome_Raba') gene = rf.RabaObject('Gene_Raba') transcript = rf.RabaObject('Transcript_Raba') def _curate(self) : if self.name != None : self.name = self.name.upper()
[docs]class Protein(pyGenoRabaObjectWrapper) : """The wrapper for playing with Proteins""" _wrapped_class = Protein_Raba def __init__(self, *args, **kwargs) : pyGenoRabaObjectWrapper.__init__(self, *args, **kwargs) self._load_sequencesTriggers = set(["sequence"]) def _makeLoadQuery(self, objectType, *args, **coolArgs) : if issubclass(objectType, SNP_INDEL) : f = RabaQuery(objectType, namespace = self._wrapped_class._raba_namespace) coolArgs['species'] = self.genome.species coolArgs['chromosomeNumber'] = self.chromosome.number coolArgs['start >='] = self.transcript.start coolArgs['start <'] = self.transcript.end if len(args) > 0 and type(args[0]) is list : for a in args[0] : if type(a) is dict : f.addFilter(**a) else : f.addFilter(*args, **coolArgs) return f return pyGenoRabaObjectWrapper._makeLoadQuery(self, objectType, *args, **coolArgs) def _load_sequences(self) : if self.chromosome.number != 'MT': self.sequence = uf.translateDNA(self.transcript.cDNA).rstrip('*') else: self.sequence = uf.translateDNA(self.transcript.cDNA, translTable_id='mt').rstrip('*') def getSequence(self): return self.sequence def _load_bin_sequence(self) : self.bin_sequence = AABinarySequence(self.sequence)
[docs] def getDefaultSequence(self) : """Returns a version str sequence where only the last allele of each polymorphisms is shown""" return self.bin_sequence.defaultSequence
[docs] def getPolymorphisms(self) : """Returns a list of all polymorphisms contained in the protein""" return self.bin_sequence.getPolymorphisms()
[docs] def find(self, sequence): """Returns the position of the first occurence of sequence taking polymorphisms into account""" return self.bin_sequence.find(sequence)
[docs] def findAll(self, sequence): """Returns all the position of the occurences of sequence taking polymorphisms into accoun""" return self.bin_sequence.findAll(sequence)
[docs] def findString(self, sequence) : """Returns the first occurence of sequence using simple string search in sequence that doesn't care about polymorphisms""" return self.sequence.find(sequence)
[docs] def findStringAll(self, sequence): """Returns all first occurences of sequence using simple string search in sequence that doesn't care about polymorphisms""" return uf.findAll(self.sequence, sequence)
def __getitem__(self, i) : return self.bin_sequence.getChar(i) def __len__(self) : return len(self.bin_sequence) def __str__(self) : return "Protein, id: %s > %s" %(self.id, str(self.transcript))