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

Source Code for Package obitools.align

 1  from obitools import BioSequence 
 2   
3 -class Alignement(list):
4
5 - def _assertData(self,data):
6 assert isinstance(data, BioSequence),'You must only add bioseq to an alignement' 7 if hasattr(self, '_alignlen'): 8 assert self._alignlen==len(data),'All aligned sequences must have the same length' 9 else: 10 self._alignlen=len(data) 11 return data
12
13 - def append(self,data):
14 data = self._assertData(data) 15 list.append(self,data)
16
17 - def __setitem__(self,index,data):
18 19 data = self._assertData(data) 20 list.__setitem__(self,index,data)
21
22 - def getSite(self,key):
23 if isinstance(key,int): 24 return [x[key] for x in self]
25
26 - def isFullGapSite(self,key):
27 return reduce(lambda x,y: x and y,(z=='-' for z in self.getSite(key)),True)
28
29 - def isGappedSite(self,key):
30 return reduce(lambda x,y: x or y,(z=='-' for z in self.getSite(key)),False)
31
32 -def alignmentReader(file,sequenceIterator):
33 seqs = sequenceIterator(file) 34 alignement = Alignement() 35 for seq in seqs: 36 alignement.append(seq) 37 return alignement
38