##// END OF EJS Templates
New reading option allows to read by blocks of different sizes
Julio Valdez -
r833:26a5421c91c8
parent child
Show More
@@ -569,6 +569,13 class JRODataReader(JRODataIO):
569 569
570 570 txIndex = None
571 571
572 #Added--------------------
573
574 selBlocksize = None
575
576 selBlocktime = None
577
578
572 579 def __init__(self):
573 580
574 581 """
@@ -1237,7 +1244,9 class JRODataReader(JRODataIO):
1237 1244 walk = True,
1238 1245 getblock = False,
1239 1246 nTxs = 1,
1240 realtime=False):
1247 realtime=False,
1248 blocksize=None,
1249 blocktime=None):
1241 1250
1242 1251 if path == None:
1243 1252 raise ValueError, "[Reading] The path is not valid"
@@ -1304,6 +1313,11 class JRODataReader(JRODataIO):
1304 1313 self.startTime = startTime
1305 1314 self.endTime = endTime
1306 1315
1316 #Added-----------------
1317 self.selBlocksize = blocksize
1318 self.selBlocktime = blocktime
1319
1320
1307 1321 if not(self.setNextFile()):
1308 1322 if (startDate!=None) and (endDate!=None):
1309 1323 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
@@ -1339,7 +1353,7 class JRODataReader(JRODataIO):
1339 1353
1340 1354 self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs
1341 1355
1342 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1356 # self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1343 1357
1344 1358
1345 1359 def getFirstHeader(self):
@@ -57,7 +57,6 class VoltageReader(JRODataReader, ProcessingUnit):
57 57 optchar = "D"
58 58 dataOut = None
59 59
60
61 60 def __init__(self):
62 61 """
63 62 Inicializador de la clase VoltageReader para la lectura de datos de voltage.
@@ -373,15 +372,41 class VoltageReader(JRODataReader, ProcessingUnit):
373 372
374 373 self.profileIndex += 1
375 374
375 # elif self.selBlocksize==None or self.selBlocksize==self.dataOut.nProfiles:
376 # """
377 # Return all block
378 # """
379 # self.dataOut.flagDataAsBlock = True
380 # self.dataOut.data = self.datablock
381 # self.dataOut.profileIndex = self.dataOut.nProfiles - 1
382 #
383 # self.profileIndex = self.dataOut.nProfiles
384
376 385 else:
377 386 """
378 Return all block
387 Return a block
379 388 """
380 self.dataOut.flagDataAsBlock = True
381 self.dataOut.data = self.datablock
382 self.dataOut.profileIndex = self.dataOut.nProfiles - 1
389 if self.selBlocksize == None: self.selBlocksize = self.dataOut.nProfiles
390 if self.selBlocktime != None: self.selBlocksize = int(self.dataOut.nProfiles*round(self.selBlocktime/(self.dataOut.ippSeconds*self.dataOut.nProfiles)))
383 391
384 self.profileIndex = self.dataOut.nProfiles
392 self.dataOut.data = self.datablock[:,self.profileIndex:self.profileIndex+self.selBlocksize,:]
393 self.profileIndex += self.selBlocksize
394
395 while self.dataOut.data.shape[1] < self.selBlocksize: #Not enough profiles to fill the block
396 if not( self.readNextBlock() ):
397 return 0
398 self.getFirstHeader()
399 self.reshapeData()
400 if self.datablock is None:
401 self.dataOut.flagNoData = True
402 return 0
403 #stack data
404 indMax = self.selBlocksize - self.dataOut.data.shape[1]
405 self.dataOut.data = numpy.hstack((self.dataOut.data,self.datablock[:,:indMax,:]))
406 self.profileIndex = indMax
407
408 self.dataOut.flagDataAsBlock = True
409 self.dataOut.nProfiles = self.selBlocksize
385 410
386 411 self.dataOut.flagNoData = False
387 412
General Comments 0
You need to be logged in to leave comments. Login now