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

Source Code for Package obitools.seqdb

 1  from obitools import NucSequence,AASequence 
 2  from obitools.format.genericparser import genericEntryIteratorGenerator 
 3  from obitools.location.feature import featureIterator 
 4   
 5  from itertools import chain 
 6   
7 -class AnnotatedSequence(object):
8
9 - def __init__(self,header,featureTable,secondaryAcs):
10 self._header = header 11 self._featureTableText = featureTable 12 self._featureTable=None 13 self._secondaryAcs=secondaryAcs 14 self._hasTaxid=None
15
16 - def getHeader(self):
17 return self._header
18 19
20 - def getFeatureTable(self,skipError=False):
21 if self._featureTable is None: 22 self._featureTable = [x for x in featureIterator(self._featureTableText,skipError)] 23 return self._featureTable
24 25
26 - def getSecondaryAcs(self):
27 return self._secondaryAcs
28
29 - def extractTaxon(self):
30 if self._hasTaxid is None: 31 32 if self._featureTable is not None: 33 s = [f for f in self._featureTable if f.ftType=='source'] 34 else: 35 s = featureIterator(self._featureTableText).next() 36 if s.ftType=='source': 37 s = [s] 38 else: 39 s = [f for f in self.featureTable if f.ftType=='source'] 40 41 t =set(int(v[6:]) for v in chain(*tuple(f['db_xref'] for f in s if 'db_xref' in f)) 42 if v[0:6]=='taxon:') 43 44 if len(t)==1: 45 self['taxid']=t.pop() 46 self._hasTaxid=True 47 else: 48 self._hasTaxid=False 49 50 t =set(chain(*tuple(f['organism'] for f in s if 'organism' in f))) 51 52 if len(t)==1: 53 self['organism']=t.pop()
54 55 56 header = property(getHeader, None, None, "Header's Docstring") 57 58 featureTable = property(getFeatureTable, None, None, "FeatureTable's Docstring") 59 60 secondaryAcs = property(getSecondaryAcs, None, None, "SecondaryAcs's Docstring")
61
62 -class AnnotatedNucSequence(AnnotatedSequence,NucSequence):
63 ''' 64 65 '''
66 - def __init__(self,id,seq,de,header,featureTable,secondaryAcs,**info):
69 70
71 -class AnnotatedAASequence(AnnotatedSequence,AASequence):
72 ''' 73 74 '''
75 - def __init__(self,id,seq,de,header,featureTable,secondaryAcs,**info):
78 79 80 nucEntryIterator=genericEntryIteratorGenerator(endEntry='^//') 81 aaEntryIterator=genericEntryIteratorGenerator(endEntry='^//') 82