diff --git a/schainpy/model/graphics/jroplot_base.py b/schainpy/model/graphics/jroplot_base.py index c157aab..0a7fc8a 100644 --- a/schainpy/model/graphics/jroplot_base.py +++ b/schainpy/model/graphics/jroplot_base.py @@ -522,7 +522,7 @@ class Plot(Operation): figname = os.path.join( self.save, self.save_code, - '{}_{}.png'.format( + '{}_{}.jpeg'.format( self.save_code, self.getDateTime(self.data.max_time).strftime( '%Y%m%d_%H%M%S' @@ -536,7 +536,7 @@ class Plot(Operation): figname = os.path.join( self.save, - '{}_{}.png'.format( + '{}_{}.jpeg'.format( self.save_code, self.getDateTime(self.data.min_time).strftime( '%Y%m%d' diff --git a/schainpy/model/io/jroIO_kamisr.py b/schainpy/model/io/jroIO_kamisr.py index 27daa9b..53816d5 100644 --- a/schainpy/model/io/jroIO_kamisr.py +++ b/schainpy/model/io/jroIO_kamisr.py @@ -54,7 +54,7 @@ class AMISRReader(ProcessingUnit): self.flagIsNewFile = 0 self.filename = '' self.amisrFilePointer = None - self.realBeamCode = [] + self.beamCodeMap = None self.azimuthList = [] self.elevationList = [] @@ -96,7 +96,10 @@ class AMISRReader(ProcessingUnit): nBaud = 0, online=False, old_beams=False, - margin_days=1): + margin_days=1, + nFFT = 1, + nChannels = None, + ): @@ -110,6 +113,9 @@ class AMISRReader(ProcessingUnit): self.margin_days = margin_days self.__sampleRate = None + self.nFFT = nFFT + self.nChannels = nChannels + #self.findFiles() if not(online): #Busqueda de archivos offline @@ -147,13 +153,21 @@ class AMISRReader(ProcessingUnit): header = 'Raw11/Data/RadacHeader' + if self.nChannels == None: + expFile = fp['Setup/ExperimentFile'][()].decode() + linesExp = expFile.split("\n") + a = [line for line in linesExp if "nbeamcodes" in line] + self.nChannels = int(a[0][11:]) + self.beamCodeByPulse = fp.get(header+'/BeamCode') # LIST OF BEAMS PER PROFILE, TO BE USED ON REARRANGE - if (self.startDate> datetime.date(2021, 7, 15)) or self.flag_old_beams: #Se cambió la forma de extracción de Apuntes el 17 o forzar con flag de reorganización + if (self.startDate > datetime.date(2021, 7, 15)) or self.flag_old_beams: #Se cambió la forma de extracción de Apuntes el 17 o forzar con flag de reorganización self.beamcodeFile = fp['Setup/Beamcodefile'][()].decode() self.trueBeams = self.beamcodeFile.split("\n") self.trueBeams.pop()#remove last - [self.realBeamCode.append(x) for x in self.trueBeams if x not in self.realBeamCode] - self.beamCode = [int(x, 16) for x in self.realBeamCode] + beams_idx = [k*self.nFFT for k in range(self.nChannels)] + beams = [self.trueBeams[b] for b in beams_idx] + self.beamCode = [int(x, 16) for x in beams] + else: _beamCode= fp.get('Raw11/Data/Beamcodes') #se usa la manera previa al cambio de apuntes self.beamCode = _beamCode[0,:] @@ -182,7 +196,7 @@ class AMISRReader(ProcessingUnit): sampleRate = fp.get('Rx/SampleRate') self.__sampleRate = sampleRate[()] self.nblocks = self.pulseCount.shape[0] #nblocks - + self.profPerBlockRAW = self.pulseCount.shape[1] #profiles per block in raw data self.nprofiles = self.pulseCount.shape[1] #nprofile self.nsa = self.nsamplesPulse[0,0] #ngates self.nchannels = len(self.beamCode) @@ -468,20 +482,26 @@ class AMISRReader(ProcessingUnit): return dataset,timeset def reshapeData(self): - #self.beamCodeByPulse, self.beamCode, self.nblocks, self.nprofiles, self.nsa, + #print(self.beamCodeByPulse, self.beamCode, self.nblocks, self.nprofiles, self.nsa) channels = self.beamCodeByPulse[0,:] nchan = self.nchannels #self.newProfiles = self.nprofiles/nchan #must be defined on filljroheader nblocks = self.nblocks nsamples = self.nsa - + #print("Channels: ",self.nChannels) #Dimensions : nChannels, nProfiles, nSamples new_block = numpy.empty((nblocks, nchan, numpy.int_(self.newProfiles), nsamples), dtype="complex64") ############################################ + profPerCH = int(self.profPerBlockRAW / (self.nFFT * self.nChannels)) for thisChannel in range(nchan): - new_block[:,thisChannel,:,:] = self.dataset[:,numpy.where(channels==self.beamCode[thisChannel])[0],:] + idx_ch = [thisChannel+k*nchan for k in range(profPerCH)] + idx_ch = numpy.array(idx_ch, dtype=int) + #print(thisChannel,idx_ch) + #print(numpy.where(channels==self.beamCode[thisChannel])[0]) + #new_block[:,thisChannel,:,:] = self.dataset[:,numpy.where(channels==self.beamCode[thisChannel])[0],:] + new_block[:,thisChannel,:,:] = self.dataset[:,idx_ch,:] new_block = numpy.transpose(new_block, (1,0,2,3)) new_block = numpy.reshape(new_block, (nchan,-1, nsamples))