diff --git a/schainpy/model/io/jroIO_base.py b/schainpy/model/io/jroIO_base.py index ac89eec..e31f158 100644 --- a/schainpy/model/io/jroIO_base.py +++ b/schainpy/model/io/jroIO_base.py @@ -569,6 +569,13 @@ class JRODataReader(JRODataIO): txIndex = None + #Added-------------------- + + selBlocksize = None + + selBlocktime = None + + def __init__(self): """ @@ -1237,7 +1244,9 @@ class JRODataReader(JRODataIO): walk = True, getblock = False, nTxs = 1, - realtime=False): + realtime=False, + blocksize=None, + blocktime=None): if path == None: raise ValueError, "[Reading] The path is not valid" @@ -1304,6 +1313,11 @@ class JRODataReader(JRODataIO): self.startTime = startTime self.endTime = endTime + #Added----------------- + self.selBlocksize = blocksize + self.selBlocktime = blocktime + + if not(self.setNextFile()): if (startDate!=None) and (endDate!=None): 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): self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs - self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs +# self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs def getFirstHeader(self): diff --git a/schainpy/model/io/jroIO_voltage.py b/schainpy/model/io/jroIO_voltage.py index 05b6e8d..33dd825 100644 --- a/schainpy/model/io/jroIO_voltage.py +++ b/schainpy/model/io/jroIO_voltage.py @@ -57,7 +57,6 @@ class VoltageReader(JRODataReader, ProcessingUnit): optchar = "D" dataOut = None - def __init__(self): """ Inicializador de la clase VoltageReader para la lectura de datos de voltage. @@ -373,15 +372,41 @@ class VoltageReader(JRODataReader, ProcessingUnit): self.profileIndex += 1 +# elif self.selBlocksize==None or self.selBlocksize==self.dataOut.nProfiles: +# """ +# Return all block +# """ +# self.dataOut.flagDataAsBlock = True +# self.dataOut.data = self.datablock +# self.dataOut.profileIndex = self.dataOut.nProfiles - 1 +# +# self.profileIndex = self.dataOut.nProfiles + else: """ - Return all block + Return a block """ - self.dataOut.flagDataAsBlock = True - self.dataOut.data = self.datablock - self.dataOut.profileIndex = self.dataOut.nProfiles - 1 + if self.selBlocksize == None: self.selBlocksize = self.dataOut.nProfiles + if self.selBlocktime != None: self.selBlocksize = int(self.dataOut.nProfiles*round(self.selBlocktime/(self.dataOut.ippSeconds*self.dataOut.nProfiles))) - self.profileIndex = self.dataOut.nProfiles + self.dataOut.data = self.datablock[:,self.profileIndex:self.profileIndex+self.selBlocksize,:] + self.profileIndex += self.selBlocksize + + while self.dataOut.data.shape[1] < self.selBlocksize: #Not enough profiles to fill the block + if not( self.readNextBlock() ): + return 0 + self.getFirstHeader() + self.reshapeData() + if self.datablock is None: + self.dataOut.flagNoData = True + return 0 + #stack data + indMax = self.selBlocksize - self.dataOut.data.shape[1] + self.dataOut.data = numpy.hstack((self.dataOut.data,self.datablock[:,:indMax,:])) + self.profileIndex = indMax + + self.dataOut.flagDataAsBlock = True + self.dataOut.nProfiles = self.selBlocksize self.dataOut.flagNoData = False