Package obitools :: Package align :: Module homopolymere
[hide private]
[frames] | no frames]

Source Code for Module obitools.align.homopolymere

 1  ''' 
 2  Created on 14 mai 2009 
 3   
 4  @author: coissac 
 5  ''' 
 6   
 7  from obitools import WrappedBioSequence 
 8   
9 -class HomoNucBioSeq(WrappedBioSequence):
10 ''' 11 classdocs 12 ''' 13 14
15 - def __init__(self,reference,id=None,definition=None,**info):
16 ''' 17 Constructor 18 ''' 19 assert reference.isNucleotide(),"reference must be a nucleic sequence" 20 WrappedBioSequence.__init__(self,reference,id=None,definition=None,**info) 21 self.__cleanHomopolymer()
22
23 - def __cleanHomopolymer(self):
24 s = [] 25 c = [] 26 old=None 27 nc=0 28 for n in self._wrapped: 29 if old is not None and n!=old: 30 s.append(old) 31 c.append(nc) 32 nc=0 33 old=n 34 nc+=1 35 self._cached=''.join(s) 36 self['homopolymer']=c 37 self._cumulative=[] 38 sum=0 39 for c in self._count: 40 sum+=c 41 self._cumulative.append(sum)
42
43 - def __len__(self):
44 return len(self._cached)
45
46 - def getStr(self):
47 return self._cached
48
49 - def __iter__(self):
50 return iter(self._cached)
51
52 - def _posInWrapped(self,position):
53 return self._cumulative[position]
54