##// END OF EJS Templates
modified for reading channels with the same pointing
joabAM -
r1557:a1cf32393853
parent child
Show More
@@ -522,7 +522,7 class Plot(Operation):
522 figname = os.path.join(
522 figname = os.path.join(
523 self.save,
523 self.save,
524 self.save_code,
524 self.save_code,
525 '{}_{}.png'.format(
525 '{}_{}.jpeg'.format(
526 self.save_code,
526 self.save_code,
527 self.getDateTime(self.data.max_time).strftime(
527 self.getDateTime(self.data.max_time).strftime(
528 '%Y%m%d_%H%M%S'
528 '%Y%m%d_%H%M%S'
@@ -536,7 +536,7 class Plot(Operation):
536
536
537 figname = os.path.join(
537 figname = os.path.join(
538 self.save,
538 self.save,
539 '{}_{}.png'.format(
539 '{}_{}.jpeg'.format(
540 self.save_code,
540 self.save_code,
541 self.getDateTime(self.data.min_time).strftime(
541 self.getDateTime(self.data.min_time).strftime(
542 '%Y%m%d'
542 '%Y%m%d'
@@ -54,7 +54,7 class AMISRReader(ProcessingUnit):
54 self.flagIsNewFile = 0
54 self.flagIsNewFile = 0
55 self.filename = ''
55 self.filename = ''
56 self.amisrFilePointer = None
56 self.amisrFilePointer = None
57 self.realBeamCode = []
57
58 self.beamCodeMap = None
58 self.beamCodeMap = None
59 self.azimuthList = []
59 self.azimuthList = []
60 self.elevationList = []
60 self.elevationList = []
@@ -96,7 +96,10 class AMISRReader(ProcessingUnit):
96 nBaud = 0,
96 nBaud = 0,
97 online=False,
97 online=False,
98 old_beams=False,
98 old_beams=False,
99 margin_days=1):
99 margin_days=1,
100 nFFT = 1,
101 nChannels = None,
102 ):
100
103
101
104
102
105
@@ -110,6 +113,9 class AMISRReader(ProcessingUnit):
110 self.margin_days = margin_days
113 self.margin_days = margin_days
111 self.__sampleRate = None
114 self.__sampleRate = None
112
115
116 self.nFFT = nFFT
117 self.nChannels = nChannels
118
113 #self.findFiles()
119 #self.findFiles()
114 if not(online):
120 if not(online):
115 #Busqueda de archivos offline
121 #Busqueda de archivos offline
@@ -147,13 +153,21 class AMISRReader(ProcessingUnit):
147
153
148
154
149 header = 'Raw11/Data/RadacHeader'
155 header = 'Raw11/Data/RadacHeader'
156 if self.nChannels == None:
157 expFile = fp['Setup/ExperimentFile'][()].decode()
158 linesExp = expFile.split("\n")
159 a = [line for line in linesExp if "nbeamcodes" in line]
160 self.nChannels = int(a[0][11:])
161
150 self.beamCodeByPulse = fp.get(header+'/BeamCode') # LIST OF BEAMS PER PROFILE, TO BE USED ON REARRANGE
162 self.beamCodeByPulse = fp.get(header+'/BeamCode') # LIST OF BEAMS PER PROFILE, TO BE USED ON REARRANGE
151 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
163 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
152 self.beamcodeFile = fp['Setup/Beamcodefile'][()].decode()
164 self.beamcodeFile = fp['Setup/Beamcodefile'][()].decode()
153 self.trueBeams = self.beamcodeFile.split("\n")
165 self.trueBeams = self.beamcodeFile.split("\n")
154 self.trueBeams.pop()#remove last
166 self.trueBeams.pop()#remove last
155 [self.realBeamCode.append(x) for x in self.trueBeams if x not in self.realBeamCode]
167 beams_idx = [k*self.nFFT for k in range(self.nChannels)]
156 self.beamCode = [int(x, 16) for x in self.realBeamCode]
168 beams = [self.trueBeams[b] for b in beams_idx]
169 self.beamCode = [int(x, 16) for x in beams]
170
157 else:
171 else:
158 _beamCode= fp.get('Raw11/Data/Beamcodes') #se usa la manera previa al cambio de apuntes
172 _beamCode= fp.get('Raw11/Data/Beamcodes') #se usa la manera previa al cambio de apuntes
159 self.beamCode = _beamCode[0,:]
173 self.beamCode = _beamCode[0,:]
@@ -182,7 +196,7 class AMISRReader(ProcessingUnit):
182 sampleRate = fp.get('Rx/SampleRate')
196 sampleRate = fp.get('Rx/SampleRate')
183 self.__sampleRate = sampleRate[()]
197 self.__sampleRate = sampleRate[()]
184 self.nblocks = self.pulseCount.shape[0] #nblocks
198 self.nblocks = self.pulseCount.shape[0] #nblocks
185
199 self.profPerBlockRAW = self.pulseCount.shape[1] #profiles per block in raw data
186 self.nprofiles = self.pulseCount.shape[1] #nprofile
200 self.nprofiles = self.pulseCount.shape[1] #nprofile
187 self.nsa = self.nsamplesPulse[0,0] #ngates
201 self.nsa = self.nsamplesPulse[0,0] #ngates
188 self.nchannels = len(self.beamCode)
202 self.nchannels = len(self.beamCode)
@@ -468,20 +482,26 class AMISRReader(ProcessingUnit):
468 return dataset,timeset
482 return dataset,timeset
469
483
470 def reshapeData(self):
484 def reshapeData(self):
471 #self.beamCodeByPulse, self.beamCode, self.nblocks, self.nprofiles, self.nsa,
485 #print(self.beamCodeByPulse, self.beamCode, self.nblocks, self.nprofiles, self.nsa)
472 channels = self.beamCodeByPulse[0,:]
486 channels = self.beamCodeByPulse[0,:]
473 nchan = self.nchannels
487 nchan = self.nchannels
474 #self.newProfiles = self.nprofiles/nchan #must be defined on filljroheader
488 #self.newProfiles = self.nprofiles/nchan #must be defined on filljroheader
475 nblocks = self.nblocks
489 nblocks = self.nblocks
476 nsamples = self.nsa
490 nsamples = self.nsa
477
491 #print("Channels: ",self.nChannels)
478 #Dimensions : nChannels, nProfiles, nSamples
492 #Dimensions : nChannels, nProfiles, nSamples
479 new_block = numpy.empty((nblocks, nchan, numpy.int_(self.newProfiles), nsamples), dtype="complex64")
493 new_block = numpy.empty((nblocks, nchan, numpy.int_(self.newProfiles), nsamples), dtype="complex64")
480 ############################################
494 ############################################
495 profPerCH = int(self.profPerBlockRAW / (self.nFFT * self.nChannels))
481
496
482 for thisChannel in range(nchan):
497 for thisChannel in range(nchan):
483 new_block[:,thisChannel,:,:] = self.dataset[:,numpy.where(channels==self.beamCode[thisChannel])[0],:]
484
498
499 idx_ch = [thisChannel+k*nchan for k in range(profPerCH)]
500 idx_ch = numpy.array(idx_ch, dtype=int)
501 #print(thisChannel,idx_ch)
502 #print(numpy.where(channels==self.beamCode[thisChannel])[0])
503 #new_block[:,thisChannel,:,:] = self.dataset[:,numpy.where(channels==self.beamCode[thisChannel])[0],:]
504 new_block[:,thisChannel,:,:] = self.dataset[:,idx_ch,:]
485
505
486 new_block = numpy.transpose(new_block, (1,0,2,3))
506 new_block = numpy.transpose(new_block, (1,0,2,3))
487 new_block = numpy.reshape(new_block, (nchan,-1, nsamples))
507 new_block = numpy.reshape(new_block, (nchan,-1, nsamples))
General Comments 0
You need to be logged in to leave comments. Login now