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
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
18
19
21 if self._featureTable is None:
22 self._featureTable = [x for x in featureIterator(self._featureTableText,skipError)]
23 return self._featureTable
24
25
27 return self._secondaryAcs
28
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
63 '''
64
65 '''
66 - def __init__(self,id,seq,de,header,featureTable,secondaryAcs,**info):
69
70
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