##// END OF EJS Templates
ONLINE & SET IS READY
Alexander Valdez -
r552:7f199d9437df
parent child
Show More
@@ -1,710 +1,781
1 1 '''
2 2 Created on Jul 3, 2014
3 3
4 4 @author: roj-com0419
5 5 '''
6 6
7 7 import os,sys
8 8 import time,datetime
9 9 import h5py
10 10 import numpy
11 import fnmatch
11 12 import re
12 13 import stuffr
13 14
14 15 from model.data.jroheaderIO import RadarControllerHeader, SystemHeader
15 16 from model.data.jrodata import Voltage
16 17 from model.proc.jroproc_base import ProcessingUnit, Operation
17 18
18 19
19 20 def isNumber(str):
20 21 """
21 22 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
22 23
23 24 Excepciones:
24 25 Si un determinado string no puede ser convertido a numero
25 26 Input:
26 27 str, string al cual se le analiza para determinar si convertible a un numero o no
27 28
28 29 Return:
29 30 True : si el string es uno numerico
30 31 False : no es un string numerico
31 32 """
32 33 try:
33 34 float( str )
34 35 return True
35 36 except:
36 37 return False
37 38
38 39 def getFileFromSet(path, ext, set):
39 40 validFilelist = []
40 41 fileList = os.listdir(path)
41 42
42 43 # 0 1234 567 89A BCDE
43 44 # H YYYY DDD SSS .ext
44 45
45 46 for thisFile in fileList:
46 47 try:
47 48 number= int(thisFile[4:10])
48 49
49 50 # year = int(thisFile[1:5])
50 51 # doy = int(thisFile[5:8])
51 52 except:
52 53 continue
53 54
54 55 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
55 56 continue
56 57
57 58 validFilelist.append(thisFile)
58 myfile = fnmatch.filter(validFilelist,'*%6.6d*'%(number))
59 myfile = fnmatch.filter(validFilelist,'*%6.6d*'%(set))
59 60 #myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
60 61
61 62 if len(myfile)!= 0:
62 63 return myfile[0]
63 64 else:
64 filename = '*%6.6d%s'%(number,ext.lower())
65 filename = '*%6.6d%s'%(set,ext.lower())
65 66 print 'the filename %s does not exist'%filename
66 67 print '...going to the last file: '
67 68
68 69 if validFilelist:
69 70 validFilelist = sorted( validFilelist, key=str.lower )
70 71 return validFilelist[-1]
71 72
72 73 return None
73 74
74 75 def getlastFileFromPath(path, ext):
75 76 """
76 77 Depura el fileList dejando solo los que cumplan el formato de "res-xxxxxx.ext"
77 78 al final de la depuracion devuelve el ultimo file de la lista que quedo.
78 79
79 80 Input:
80 81 fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
81 82 ext : extension de los files contenidos en una carpeta
82 83
83 84 Return:
84 85 El ultimo file de una determinada carpeta, no se considera el path.
85 86 """
86 87 validFilelist = []
87 88 fileList = os.listdir(path)
88 89
89 90 # 0 1234 567 89A BCDE
90 91 # H YYYY DDD SSS .ext
91 92
92 93 for thisFile in fileList:
93 94
94 95 try:
95 96 number= int(thisFile[4:10])
96 97 except:
97 98 print "There is a file or folder with different format"
98 99 if not isNumber(number):
99 100 continue
100 101
101 102 # year = thisFile[1:5]
102 103 # if not isNumber(year):
103 104 # continue
104 105
105 106 # doy = thisFile[5:8]
106 107 # if not isNumber(doy):
107 108 # continue
108 109
109 110 number= int(number)
110 111 # year = int(year)
111 112 # doy = int(doy)
112 113
113 114 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
114 115 continue
115 116
116 117
117 118 validFilelist.append(thisFile)
118 119
119 120
120 121 if validFilelist:
121 122 validFilelist = sorted( validFilelist, key=str.lower )
122 123 return validFilelist[-1]
123 124
124 125 return None
125 126
126 127
127 128
128 129 class HFReader(ProcessingUnit):
129 130 '''
130 131 classdocs
131 132 '''
132 133 path = None
133 134 startDate= None
134 135 endDate = None
135 136 startTime= None
136 137 endTime = None
137 138 walk = None
138 139 isConfig = False
139 140 dataOut=None
140 141 nTries = 3
141 142 ext = ".hdf5"
142 143
143 144 def __init__(self):
144 145 '''
145 146 Constructor
146 147 '''
147 148 ProcessingUnit.__init__(self)
148 149
149 150 self.isConfig =False
150 151
151 152 self.datablock = None
152 153
154 self.filename_current=None
155
153 156 self.utc = 0
154 157
155 158 self.ext='.hdf5'
156 159
157 160 self.flagIsNewFile = 1
158 161
159 162 #-------------------------------------------------
160 163 self.fileIndex=None
161 164
162 165 self.profileIndex_offset=None
163 166
164 167 self.filenameList=[]
165 168
166 169 self.hfFilePointer= None
167 170
168 171 self.filename_online = None
169 172
170 173 self.status=True
171 174
172 175 self.flagNoMoreFiles= False
173 176
174 self.__waitForNewFile = 3
177 self.__waitForNewFile = 1
175 178
176 179
177 180 #--------------------------------------------------
178 181
179 182 self.dataOut = self.createObjByDefault()
180 183
181 184
182 185 def createObjByDefault(self):
183 186
184 187 dataObj = Voltage()
185 188
186 189 return dataObj
187 190
188 191 def setObjProperties(self):
189 192
190 193 pass
191 194
192 195 def getBlockDimension(self):
193 196 """
194 197 Obtiene la cantidad de puntos a leer por cada bloque de datos
195 198
196 199 Affected:
197 200 self.blocksize
198 201
199 202 Return:
200 203 None
201 204 """
202 205 pts2read =self.nChannels*self.nHeights*self.nProfiles
203 206 self.blocksize = pts2read
204 207
205 208 def __readHeader(self):
206 209
207 210 self.nProfiles = 100
208 211 self.nHeights = 1000
209 212 self.nChannels = 2
210 213 self.__firstHeigth=0
211 214 self.__nSamples=1000
212 215 self.__deltaHeigth=1.5
213 216 self.__sample_rate=1e5
214 217 #self.__frequency=2.72e6
215 218 #self.__frequency=3.64e6
216 219 self.__frequency=None
217 220 self.__online = False
221 self.filename_next_set=None
218 222
219 223 #print "Frequency of Operation:", self.__frequency
220 224
221 225
222 226 def __setParameters(self,path='', startDate='',endDate='',startTime='', endTime='', walk=''):
223 227 self.path = path
224 228 self.startDate = startDate
225 229 self.endDate = endDate
226 230 self.startTime = startTime
227 231 self.endTime = endTime
228 232 self.walk = walk
229 233
230 234 def __checkPath(self):
231 235 if os.path.exists(self.path):
232 236 self.status=1
233 237 else:
234 238 self.status=0
235 239 print 'Path %s does not exits'%self.path
236 240 return
237 241 return
238 242
239 243 def __selDates(self, hf_dirname_format):
240 244 try:
241 245 dir_hf_filename= self.path+"/"+hf_dirname_format
242 246 fp= h5py.File(dir_hf_filename,'r')
243 247 hipoc=fp['t'].value
244 248 fp.close()
245 249 date_time=stuffr.unix2datestr(hipoc)
246 250 year =int(date_time[0:4])
247 251 month=int(date_time[5:7])
248 252 dom =int(date_time[8:10])
249 253 thisDate= datetime.date(year,month,dom)
250 254 if (thisDate>=self.startDate and thisDate <= self.endDate):
251 255 return hf_dirname_format
252 256 except:
253 257 return None
254 258
255 259 def __findDataForDates(self,online=False):
256 260 if not(self.status):
257 261 return None
258 262
259 263 pat = '\d+.\d+'
260 264 dirnameList = [re.search(pat,x) for x in os.listdir(self.path)]
261 265 dirnameList = filter(lambda x:x!=None,dirnameList)
262 266 dirnameList = [x.string for x in dirnameList]
263 267 if not(online):
264 268
265 269 dirnameList = [self.__selDates(x) for x in dirnameList]
266 270 dirnameList = filter(lambda x:x!=None,dirnameList)
267 271
268 272 if len(dirnameList)>0:
269 273 self.status = 1
270 274 self.dirnameList = dirnameList
271 275 self.dirnameList.sort()
272 276
273 277 else:
274 278 self.status = 0
275 279 return None
276 280
277 281 def __getTimeFromData(self):
278 282 startDateTime_Reader = datetime.datetime.combine(self.startDate,self.startTime)
279 283 endDateTime_Reader = datetime.datetime.combine(self.endDate,self.endTime)
280 284 print 'Filtering Files from %s to %s'%(startDateTime_Reader, endDateTime_Reader)
281 285 print '........................................'
282 286 filter_filenameList=[]
283 287 self.filenameList.sort()
284 288 for i in range(len(self.filenameList)-1):
285 289 filename=self.filenameList[i]
286 290 dir_hf_filename= filename
287 291 fp= h5py.File(dir_hf_filename,'r')
288 292 hipoc=fp['t'].value
289 293 hipoc=hipoc+self.timezone
290 294 date_time=stuffr.unix2datestr(hipoc)
291 295 fp.close()
292 296 year =int(date_time[0:4])
293 297 month=int(date_time[5:7])
294 298 dom =int(date_time[8:10])
295 299 hour =int(date_time[11:13])
296 300 min =int(date_time[14:16])
297 301 sec =int(date_time[17:19])
298 302 this_time=datetime.datetime(year,month,dom,hour,min,sec)
299 303 if (this_time>=startDateTime_Reader and this_time <= endDateTime_Reader):
300 304 filter_filenameList.append(filename)
301 305 filter_filenameList.sort()
302 306 self.filenameList = filter_filenameList
303 307 return 1
304 308
305 309 def __getFilenameList(self):
306 310 #print "hola"
307 311 #print self.dirnameList
308 312 dirList = [os.path.join(self.path,x) for x in self.dirnameList]
309 313 self.filenameList= dirList
314 #print self.filenameList
315 #print "pase",len(self.filenameList)
310 316
311 317 def __selectDataForTimes(self, online=False):
312 318
313 319 if not(self.status):
314 320 return None
315 321 #----------------
316 322 self.__getFilenameList()
317 323 #----------------
318 324 if not(online):
319 325 if not(self.all):
320 326 self.__getTimeFromData()
321 327 if len(self.filenameList)>0:
322 328 self.status=1
323 329 self.filenameList.sort()
324 330 else:
325 331 self.status=0
326 332 return None
327 333 else:
328 #if self.set== None:
334 if self.set== None:
335 filename =getlastFileFromPath(self.path,self.ext)
336
337 if self.flag_nextfile==True:
338 self.dirnameList=[filename]
339 fullfilename=self.path+"/"+filename
340 self.filenameList=[self.filenameList[-1]]
341 self.filename_next_set=int(filename[4:10])+1
342
343 self.flag_nextfile=False
344 else:
345 if self.filename_next_set== int(filename[4:10]):
346 self.dirnameList=[filename]
347 fullfilename=self.path+"/"+filename
348 self.filenameList=[self.filenameList[-1]]
349 self.filename_next_set=int(filename[4:10])+1
350
351 else:
352 set=self.filename_next_set
353 filename=getFileFromSet(self.path,self.ext,set=set)
354 self.filename_next_set=int(filename[4:10])+1
355 if filename==None:
356 filename =getlastFileFromPath(self.path,self.ext)
357 self.filename_next_set=int(filename[4:10])
358 self.dirnameList=[filename]
359 fullfilename=self.path+"/"+filename
360 self.filenameList=[self.filenameList[-1]]
361
362 else:
363 try:
364 filename=getFileFromSet(self.path,self.ext,self.set)
365 self.dirnameList=[filename]
366 fullfilename=self.path+"/"+filename
367 self.filenameList=[fullfilename]
368 except:
329 369 self.filenameList=[self.filenameList[-1]]
330 #else:
331 # try:
332 # filename=getFileFromSet(self.path,self.ext,self.set)
333 # self.filenameList=self.path+"/"+filename
334 # except:
335 # self.filenameList=[self.filenameList[-1]]
336 370
337 371
338 372 def __searchFilesOffline(self,
339 373 path,
340 374 startDate,
341 375 endDate,
342 376 ext,
343 377 startTime=datetime.time(0,0,0),
344 378 endTime=datetime.time(23,59,59),
345 379 walk=True):
346 380
347 381 self.__setParameters(path, startDate, endDate, startTime, endTime, walk)
348 382
349 383 self.__checkPath()
350 384
351 385 self.__findDataForDates()
352 386 #print self.dirnameList
353 387
354 388 self.__selectDataForTimes()
355 389
356 390 for i in range(len(self.filenameList)):
357 391 print "%s"% (self.filenameList[i])
358 392
359 393 return
360 394
361 395 def __searchFilesOnline(self,
362 396 path,
363 397 expLabel= "",
364 398 ext=None,
365 399 startDate=None,
366 400 endDate=None,
367 401 walk=True,
368 402 set=None):
369 403
370 404
371 405 startDate = datetime.datetime.utcnow().date()
372 406 endDate = datetime.datetime.utcnow().date()
373 407
374 408 self.__setParameters(path=path,startDate=startDate,endDate=endDate,walk=walk)
375 409
376 410 self.__checkPath()
377 411
378 # fullpath=path
379 #
380 # print "%s folder was found: " %(fullpath )
381 #
382 # if set == None:
383 # filename =getlastFileFromPath(fullpath,ext)
384 # startDate= datetime.datetime.utcnow().date
385 # endDate= datetime.datetime.utcnow().date()
412 fullpath=path
413 print "%s folder was found: " %(fullpath )
414
415 if set == None:
416 self.set=None
417 filename =getlastFileFromPath(fullpath,ext)
418 startDate= datetime.datetime.utcnow().date
419 endDate= datetime.datetime.utcnow().date()
386 420 #
387 # else:
388 # filename= getFileFromSet(fullpath,ext,set)
389 # startDate=None
390 # endDate=None
421 else:
422 filename= getFileFromSet(fullpath,ext,set)
423 startDate=None
424 endDate=None
391 425 #
392 # if not (filename):
393 # return None,None,None,None,None
426 if not (filename):
427 return None,None,None,None,None
394 428 # print "%s file was found" %(filename)
429
395 430 #
396 431 # dir_hf_filename= self.path+"/"+filename
397 432 # fp= h5py.File(dir_hf_filename,'r')
398 433 # hipoc=fp['t'].value
399 434 # fp.close()
400 435 # date_time=stuffr.unix2datestr(hipoc)
401 436 #
402 437 # year =int(date_time[0:4])
403 438 # month=int(date_time[5:7])
404 439 # dom =int(date_time[8:10])
405 440 # set= int(filename[4:10])
406 441 # self.set=set-1
407 442 #self.dirnameList=[filename]
408 self.__findDataForDates(online=True)
409 self.dirnameList=[self.dirnameList[-1]]
443 filenameList= fullpath+"/"+filename
444 self.dirnameList=[filename]
445 self.filenameList=[filenameList]
446 self.flag_nextfile=True
447
448 #self.__findDataForDates(online=True)
449 #self.dirnameList=[self.dirnameList[-1]]
410 450 #print self.dirnameList
411 self.__selectDataForTimes(online=True)
451 #self.__selectDataForTimes(online=True)
412 452 #return fullpath,filename,year,month,dom,set
413 453 return
414 454
415 455 def __setNextFile(self,online=False):
416 456 """
417 457 """
418 458 if not(online):
419 459 newFile = self.__setNextFileOffline()
420 460 else:
421 461 newFile = self.__setNextFileOnline()
422 462
423 463 if not(newFile):
424 464 return 0
425 465 return 1
426 466
427 467 def __setNextFileOffline(self):
428 468 """
429 469 """
430 470 idFile= self.fileIndex
431 471 while(True):
432 472 idFile += 1
433 473 if not (idFile < len(self.filenameList)):
434 474 self.flagNoMoreFiles = 1
435 475 print "No more Files"
436 476 return 0
437 477 filename = self.filenameList[idFile]
438 478 hfFilePointer =h5py.File(filename,'r')
439 479
440 480 epoc=hfFilePointer['t'].value
441 481 #this_time=datetime.datetime(year,month,dom,hour,min,sec)
442 482 break
443 483
444 484 self.flagIsNewFile = 1
445 485 self.fileIndex = idFile
446 486 self.filename = filename
447 487
448 488 self.hfFilePointer = hfFilePointer
449 489 hfFilePointer.close()
450 490 self.__t0=epoc
451 491 print "Setting the file: %s"%self.filename
452 492
453 493 return 1
454 494
455 495 def __setNextFileOnline(self):
456 496 """
457 497 """
458 filename = self.filenameList[0]
498 if self.set==None:
499 pass
500 else:
501 self.set +=1
502
503 filename = self.filenameList[0]#fullfilename
459 504 if self.filename_online != None:
460 505 self.__selectDataForTimes(online=True)
461 506 filename = self.filenameList[0]
462 507 while self.filename_online == filename:
463 508 print 'waiting %d seconds to get a new file...'%(self.__waitForNewFile)
464 509 time.sleep(self.__waitForNewFile)
465 self.__findDataForDates(True)
510 #self.__findDataForDates(online=True)
466 511 self.__selectDataForTimes(online=True)
467 512 filename = self.filenameList[0]
468 print filename
513 sizeoffile=os.path.getsize(filename)
514
515 #print filename
516 sizeoffile=os.path.getsize(filename)
517 if sizeoffile<1650240:
518 print "%s is not the rigth size"%filename
519 delay=2
520 print 'waiting %d seconds for delay...'%(delay)
521 time.sleep(delay)
522 sizeoffile=os.path.getsize(filename)
523 if sizeoffile<1650240:
524 delay
525 print 'waiting %d more seconds for delay...'%(delay)
526 time.sleep(delay)
527
469 528
529
530 try:
470 531 hfFilePointer=h5py.File(filename,'r')
532
533 except:
534 print "Error reading file %s"%filename
535
471 536 self.filename_online=filename
472 537 epoc=hfFilePointer['t'].value
473 538
474 539 self.hfFilePointer=hfFilePointer
475 540 hfFilePointer.close()
476 541 self.__t0=epoc
477 542
478 543
479 544 self.flagIsNewFile = 1
480 545 self.filename = filename
481 546
482 547 print "Setting the file: %s"%self.filename
483 548 return 1
484 549
485 550 def __getExpParameters(self):
486 551 if not(self.status):
487 552 return None
488 553
489 554 def setup(self,
490 555 path = None,
491 556 startDate = None,
492 557 endDate = None,
493 558 startTime = datetime.time(0,0,0),
494 559 endTime = datetime.time(23,59,59),
495 560 set = None,
496 561 expLabel = "",
497 562 ext = None,
498 563 all=0,
499 564 timezone=0,
500 565 online = False,
501 566 delay = 60,
502 567 walk = True):
503 568 '''
504 569 In this method we should set all initial parameters.
505 570
506 571 '''
507 572 if path==None:
508 573 raise ValueError,"The path is not valid"
509 574
510 575 if ext==None:
511 576 ext = self.ext
512 577
513 578 self.timezone= timezone
514 579 self.online= online
515 580 self.all=all
581 #if set==None:
516 582
517
583 #print set
518 584 if not(online):
519 585 print "Searching files in offline mode..."
520 586
521 587 self.__searchFilesOffline(path, startDate, endDate, ext, startTime, endTime, walk)
522 588 else:
523 589 print "Searching files in online mode..."
524 self.__searchFilesOnline(path, walk)
590 self.__searchFilesOnline(path, walk,ext,set=set)
591 if set==None:
592 pass
593 else:
594 self.set=set-1
525 595
526 596 # for nTries in range(self.nTries):
527 597 #
528 598 # fullpath,file,year,month,day,set = self.__searchFilesOnline(path=path,expLabel=expLabel,ext=ext, walk=walk,set=set)
529 599 #
530 600 # if fullpath:
531 601 # break
532 602 # print '\tWaiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
533 603 # time.sleep(self.delay)
534 604 # if not(fullpath):
535 605 # print "There ins't valid files in %s" % path
536 606 # return None
537 607
538 608
539 609 if not(self.filenameList):
540 610 print "There is no files into the folder: %s"%(path)
541 611 sys.exit(-1)
542 612
543 613 self.__getExpParameters()
544 614
615
545 616 self.fileIndex = -1
546 617
547 618 self.__setNextFile(online)
548 619
549 620 self.__readMetadata()
550 621
551 622 self.__setLocalVariables()
552 623
553 624 self.__setHeaderDO()
554 625 #self.profileIndex_offset= 0
555 626
556 627 #self.profileIndex = self.profileIndex_offset
557 628
558 629 self.isConfig = True
559 630
560 631 def __readMetadata(self):
561 632 self.__readHeader()
562 633
563 634
564 635 def __setLocalVariables(self):
565 636
566 637 self.datablock = numpy.zeros((self.nChannels, self.nHeights,self.nProfiles), dtype = numpy.complex)
567 638 #
568 639
569 640
570 641
571 642 self.profileIndex = 9999
572 643
573 644
574 645 def __setHeaderDO(self):
575 646
576 647
577 648 self.dataOut.radarControllerHeaderObj = RadarControllerHeader()
578 649
579 650 self.dataOut.systemHeaderObj = SystemHeader()
580 651
581 652 self.dataOut.type = "Voltage"
582 653
583 654 self.dataOut.data = None
584 655
585 656 self.dataOut.dtype = numpy.dtype([('real','<i8'),('imag','<i8')])
586 657
587 658 self.dataOut.nProfiles = 1
588 659
589 660 self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
590 661
591 662 self.dataOut.channelList = range(self.nChannels)
592 663
593 664 #self.dataOut.channelIndexList = None
594 665
595 666 self.dataOut.flagNoData = True
596 667
597 668 #Set to TRUE if the data is discontinuous
598 669 self.dataOut.flagDiscontinuousBlock = False
599 670
600 671 self.dataOut.utctime = None
601 672
602 673 self.dataOut.timeZone = 0
603 674
604 675 self.dataOut.dstFlag = 0
605 676
606 677 self.dataOut.errorCount = 0
607 678
608 679 self.dataOut.nCohInt = 1
609 680
610 681 self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
611 682
612 683 self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
613 684
614 685 self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
615 686
616 687 self.dataOut.flagShiftFFT = False
617 688
618 689 self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
619 690
620 691 #Time interval between profiles
621 692 #self.dataOut.timeInterval =self.dataOut.ippSeconds * self.dataOut.nCohInt
622 693
623 694
624 695 self.dataOut.frequency = self.__frequency
625 696
626 697 self.dataOut.realtime = self.__online
627 698
628 699 def __hasNotDataInBuffer(self):
629 700
630 701 if self.profileIndex >= self.nProfiles:
631 702 return 1
632 703
633 704 return 0
634 705
635 706 def readNextBlock(self):
636 707 if not(self.__setNewBlock()):
637 708 return 0
638 709
639 710 if not(self.readBlock()):
640 711 return 0
641 712
642 713 return 1
643 714
644 715 def __setNewBlock(self):
645 716
646 717 if self.hfFilePointer==None:
647 718 return 0
648 719
649 720 if self.flagIsNewFile:
650 721 return 1
651 722
652 723 if self.profileIndex < self.nProfiles:
653 724 return 1
654 725
655 726 self.__setNextFile(self.online)
656 727
657 728 return 1
658 729
659 730
660 731
661 732 def readBlock(self):
662 733 fp=h5py.File(self.filename,'r')
663 734 #Puntero que apunta al archivo hdf5
664 735 ch0=(fp['ch0']).value #Primer canal (100,1000)--(perfiles,alturas)
665 736 ch1=(fp['ch1']).value #Segundo canal (100,1000)--(perfiles,alturas)
666 737 fp.close()
667 738 ch0= ch0.swapaxes(0,1) #Primer canal (100,1000)--(alturas,perfiles)
668 739 ch1= ch1.swapaxes(0,1) #Segundo canal (100,1000)--(alturas,perfiles)
669 740 self.datablock = numpy.array([ch0,ch1])
670 741 self.flagIsNewFile=0
671 742
672 743 self.profileIndex=0
673 744
674 745 return 1
675 746
676 747 def getData(self):
677 748 if self.flagNoMoreFiles:
678 749 self.dataOut.flagNoData = True
679 750 print 'Process finished'
680 751 return 0
681 752
682 753 if self.__hasNotDataInBuffer():
683 754 if not(self.readNextBlock()):
684 755 self.dataOut.flagNodata=True
685 756 return 0
686 757
687 758 ##############################
688 759 ##############################
689 760 self.dataOut.data = self.datablock[:,:,self.profileIndex]
690 761 self.dataOut.utctime= self.__t0 + self.dataOut.ippSeconds*self.profileIndex+self.timezone
691 762 self.dataOut.profileIndex= self.profileIndex
692 763 self.dataOut.flagNoData=False
693 764 self.profileIndex +=1
694 765
695 766 return self.dataOut.data
696 767
697 768
698 769 def run(self, **kwargs):
699 770 '''
700 771 This method will be called many times so here you should put all your code
701 772 '''
702 773
703 774 if not self.isConfig:
704 775 self.setup(**kwargs)
705 776 self.isConfig = True
706 777 self.getData()
707 778
708 779
709 780
710 781 No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now