1 from obitools import utils
2 from obitools import NucSequence
3 from obitools.utils import universalOpen, universalTell, fileSize, progressBar
4 import struct
5 import sys
6
7
10 utils.ColumnFile.__init__(self,
11 stream, '|', True,
12 (str,int,int,
13 str,int,str,
14 int,str,int,
15 str,int,str,
16 str,str,int,
17 str,int,int,
18 str,str), "#")
19
20
22 data = utils.ColumnFile.next(self)
23 seq = NucSequence(data[0],data[18],data[19])
24 seq['seq_length_ori']=data[1]
25 seq['taxid']=data[2]
26 seq['rank']=data[3]
27 seq['species']=data[4]
28 seq['species_sn']=data[5]
29 seq['genus']=data[6]
30 seq['genus_sn']=data[7]
31 seq['family']=data[8]
32 seq['family_sn']=data[9]
33 seq['strand']=data[12]
34 seq['forward_primer']=data[13]
35 seq['forward_error']=data[14]
36 seq['reverse_primer']=data[15]
37 seq['reverse_error']=data[16]
38
39 return seq
40
41
42
44
46 file = universalOpen(file)
47 (recordCount,) = struct.unpack('> I',file.read(4))
48 self._recover=False
49
50 if recordCount:
51 for i in xrange(recordCount):
52 (recordSize,)=struct.unpack('>I',file.read(4))
53 record = file.read(recordSize)
54 yield record
55 else:
56 print >> sys.stderr,"\n\n WARNING : EcoPCRDB readding set into recover data mode\n"
57 self._recover=True
58 ok=True
59 while(ok):
60 try:
61 (recordSize,)=struct.unpack('>I',file.read(4))
62 record = file.read(recordSize)
63 yield record
64 except:
65 ok=False
66