##// END OF EJS Templates
Bug Fixed: Reading Frames and Selecting pulses
Daniel Valdez -
r480:e41d165c9f5f
parent child
Show More
@@ -3507,6 +3507,9 class AMISRReader(ProcessingUnit):
3507 self.frequency_h5file = None
3507 self.frequency_h5file = None
3508
3508
3509
3509
3510 self.__firstFile = True
3511 self.buffer_radactime = None
3512
3510 def __createObjByDefault(self):
3513 def __createObjByDefault(self):
3511
3514
3512 dataObj = AMISR()
3515 dataObj = AMISR()
@@ -3651,7 +3654,8 class AMISRReader(ProcessingUnit):
3651 self.radacHeaderObj = RadacHeader(self.amisrFilePointer)
3654 self.radacHeaderObj = RadacHeader(self.amisrFilePointer)
3652
3655
3653 #update values from experiment cfg file
3656 #update values from experiment cfg file
3654 self.radacHeaderObj.nrecords = self.recordsperfile_fromfile
3657 if self.radacHeaderObj.nrecords == self.recordsperfile_fromfile:
3658 self.radacHeaderObj.nrecords = self.recordsperfile_fromfile
3655 self.radacHeaderObj.nbeams = self.nbeamcodes_fromfile
3659 self.radacHeaderObj.nbeams = self.nbeamcodes_fromfile
3656 self.radacHeaderObj.npulses = self.npulsesint_fromfile
3660 self.radacHeaderObj.npulses = self.npulsesint_fromfile
3657 self.radacHeaderObj.nsamples = self.ngates_fromfile
3661 self.radacHeaderObj.nsamples = self.ngates_fromfile
@@ -3718,6 +3722,15 class AMISRReader(ProcessingUnit):
3718
3722
3719 self.status = 1
3723 self.status = 1
3720
3724
3725 def __setIdsAndArrays(self):
3726 self.dataByFrame = self.__setDataByFrame()
3727 self.beamCodeByFrame = self.amisrFilePointer.get('Raw11/Data/RadacHeader/BeamCode').value[0, :]
3728 self.readRanges()
3729 self.idpulse_range1, self.idpulse_range2 = self.radacHeaderObj.getIndexRangeToPulse(0)
3730 self.radacTimeByFrame = numpy.zeros(self.radacHeaderObj.npulses)
3731 self.buffer_radactime = numpy.zeros_like(self.radacTimeByFrame)
3732
3733
3721 def __setNextFile(self):
3734 def __setNextFile(self):
3722
3735
3723 newFile = self.__setNextFileOffline()
3736 newFile = self.__setNextFileOffline()
@@ -3726,6 +3739,11 class AMISRReader(ProcessingUnit):
3726 return 0
3739 return 0
3727
3740
3728 self.__readHeader()
3741 self.__readHeader()
3742
3743 if self.__firstFile:
3744 self.__setIdsAndArrays()
3745 self.__firstFile = False
3746
3729 self.__getBeamCode()
3747 self.__getBeamCode()
3730 self.readDataBlock()
3748 self.readDataBlock()
3731
3749
@@ -3798,37 +3816,39 class AMISRReader(ProcessingUnit):
3798 def readSamples_version1(self,idrecord):
3816 def readSamples_version1(self,idrecord):
3799 #estas tres primeras lineas solo se deben ejecutar una vez
3817 #estas tres primeras lineas solo se deben ejecutar una vez
3800 if self.flagIsNewFile:
3818 if self.flagIsNewFile:
3801 self.idpulse_range1, self.idpulse_range2 = self.radacHeaderObj.getIndexRangeToPulse(0)
3802 self.dataByFrame = self.__setDataByFrame()
3803 self.beamCodeByFrame = self.readBeamCode(idrecord, self.idpulse_range1, self.idpulse_range2)
3804 self.radacTimeByFrame = self.readRadacTime(idrecord, self.idpulse_range1, self.idpulse_range2)
3805 #reading dataset
3819 #reading dataset
3806 self.dataset = self.__readDataSet()
3820 self.dataset = self.__readDataSet()
3821 self.flagIsNewFile = 0
3807
3822
3808 if idrecord == 0:
3823 if idrecord == 0:
3824 #if self.buffer_last_record == None:
3825 selectorById = self.radacHeaderObj.pulseCount[0,self.idpulse_range2]
3809
3826
3810 if len(numpy.where(self.dataByFrame!=0.0)[0]) or len(numpy.where(self.dataByFrame!=0.0)[1]) or len(numpy.where(self.dataByFrame!=0.0)[2]):
3827 self.dataByFrame[selectorById,:,:] = self.dataset[0, self.idpulse_range2,:,:]
3811 #falta agregar una condicion para datos discontinuos
3828
3812 #por defecto une los datos del record anterior
3829 self.radacTimeByFrame[selectorById] = self.radacHeaderObj.radacTime[0, self.idpulse_range2]
3813 self.dataByFrame[self.idpulse_range2, :, :] = self.dataset[idrecord, self.idpulse_range2, :, :]
3830
3814 #timepulse
3831 selectorById = self.radacHeaderObj.pulseCount[0,self.idpulse_range1]
3815 self.radacTimeByFrame[self.idpulse_range2] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range2]
3832
3816 else:
3833 self.radacTimeByFrame[selectorById] = self.buffer_radactime[selectorById]
3817 self.dataByFrame[self.idpulse_range1, :, :] = self.dataset[idrecord, self.idpulse_range1, :, :]
3818
3819 self.radacTimeByFrame[self.idpulse_range1] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range1]
3820
3834
3821 datablock = self.__setDataBlock()
3835 datablock = self.__setDataBlock()
3822
3836
3823 return datablock
3837 return datablock
3838
3839 selectorById = self.radacHeaderObj.pulseCount[idrecord-1,self.idpulse_range1]
3840 self.dataByFrame[selectorById,:,:] = self.dataset[idrecord-1, self.idpulse_range1, :, :]
3841 self.radacTimeByFrame[selectorById] = self.radacHeaderObj.radacTime[idrecord-1, self.idpulse_range1]
3824
3842
3825 self.dataByFrame[self.idpulse_range1, :, :] = self.dataset[idrecord - 1,self.idpulse_range1, :, :]
3843 selectorById = self.radacHeaderObj.pulseCount[idrecord,self.idpulse_range2]#data incompleta ultimo archivo de carpeta, verifica el record real segun la dimension del arreglo de datos
3826 self.dataByFrame[self.idpulse_range2, :, :] = self.dataset[idrecord, self.idpulse_range2, :, :]
3844 self.dataByFrame[selectorById,:,:] = self.dataset[idrecord, self.idpulse_range2, :, :]
3827 datablock = self.__setDataBlock()
3845 self.radacTimeByFrame[selectorById] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range2]
3828 self.flagIsNewFile = 0
3829
3830 self.dataByFrame[self.idpulse_range1, :, :] = self.dataset[idrecord, self.idpulse_range1, :, :]
3831
3846
3847 datablock = self.__setDataBlock()
3848
3849 selectorById = self.radacHeaderObj.pulseCount[idrecord,self.idpulse_range1]
3850 self.dataByFrame[selectorById,:,:] = self.dataset[idrecord, self.idpulse_range1, :, :]
3851 self.buffer_radactime[selectorById] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range1]
3832
3852
3833 return datablock
3853 return datablock
3834
3854
@@ -3852,8 +3872,8 class AMISRReader(ProcessingUnit):
3852
3872
3853 def readDataBlock(self):
3873 def readDataBlock(self):
3854
3874
3875 self.datablock = self.readSamples_version1(self.idrecord_count)
3855 #self.datablock = self.readSamples(self.idrecord_count)
3876 #self.datablock = self.readSamples(self.idrecord_count)
3856 self.datablock = self.readSamples(self.idrecord_count)
3857 #print 'record:', self.idrecord_count
3877 #print 'record:', self.idrecord_count
3858
3878
3859 self.idrecord_count += 1
3879 self.idrecord_count += 1
@@ -3905,9 +3925,7 class AMISRReader(ProcessingUnit):
3905
3925
3906 if self.__hasNotDataInBuffer():
3926 if self.__hasNotDataInBuffer():
3907 self.readNextBlock()
3927 self.readNextBlock()
3908 # if not( self.readNextBlock() ):
3928
3909 # return 0
3910 # self.getFirstHeader()
3911
3929
3912 if self.datablock == None: # setear esta condicion cuando no hayan datos por leers
3930 if self.datablock == None: # setear esta condicion cuando no hayan datos por leers
3913 self.dataOut.flagNoData = True
3931 self.dataOut.flagNoData = True
General Comments 0
You need to be logged in to leave comments. Login now