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

Source Code for Package obitools.ecopcr

 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   
8 -class EcoPCRFile(utils.ColumnFile):
9 - def __init__(self,stream):
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
21 - def next(self):
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
43 -class EcoPCRDBFile(object):
44
45 - def _ecoRecordIterator(self,file):
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