##// 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 3507 self.frequency_h5file = None
3508 3508
3509 3509
3510 self.__firstFile = True
3511 self.buffer_radactime = None
3512
3510 3513 def __createObjByDefault(self):
3511 3514
3512 3515 dataObj = AMISR()
@@ -3651,7 +3654,8 class AMISRReader(ProcessingUnit):
3651 3654 self.radacHeaderObj = RadacHeader(self.amisrFilePointer)
3652 3655
3653 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 3659 self.radacHeaderObj.nbeams = self.nbeamcodes_fromfile
3656 3660 self.radacHeaderObj.npulses = self.npulsesint_fromfile
3657 3661 self.radacHeaderObj.nsamples = self.ngates_fromfile
@@ -3718,6 +3722,15 class AMISRReader(ProcessingUnit):
3718 3722
3719 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 3734 def __setNextFile(self):
3722 3735
3723 3736 newFile = self.__setNextFileOffline()
@@ -3726,6 +3739,11 class AMISRReader(ProcessingUnit):
3726 3739 return 0
3727 3740
3728 3741 self.__readHeader()
3742
3743 if self.__firstFile:
3744 self.__setIdsAndArrays()
3745 self.__firstFile = False
3746
3729 3747 self.__getBeamCode()
3730 3748 self.readDataBlock()
3731 3749
@@ -3798,37 +3816,39 class AMISRReader(ProcessingUnit):
3798 3816 def readSamples_version1(self,idrecord):
3799 3817 #estas tres primeras lineas solo se deben ejecutar una vez
3800 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 3819 #reading dataset
3806 self.dataset = self.__readDataSet()
3820 self.dataset = self.__readDataSet()
3821 self.flagIsNewFile = 0
3807 3822
3808 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]):
3811 #falta agregar una condicion para datos discontinuos
3812 #por defecto une los datos del record anterior
3813 self.dataByFrame[self.idpulse_range2, :, :] = self.dataset[idrecord, self.idpulse_range2, :, :]
3814 #timepulse
3815 self.radacTimeByFrame[self.idpulse_range2] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range2]
3816 else:
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]
3827 self.dataByFrame[selectorById,:,:] = self.dataset[0, self.idpulse_range2,:,:]
3828
3829 self.radacTimeByFrame[selectorById] = self.radacHeaderObj.radacTime[0, self.idpulse_range2]
3830
3831 selectorById = self.radacHeaderObj.pulseCount[0,self.idpulse_range1]
3832
3833 self.radacTimeByFrame[selectorById] = self.buffer_radactime[selectorById]
3820 3834
3821 3835 datablock = self.__setDataBlock()
3822 3836
3823 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, :, :]
3826 self.dataByFrame[self.idpulse_range2, :, :] = self.dataset[idrecord, self.idpulse_range2, :, :]
3827 datablock = self.__setDataBlock()
3828 self.flagIsNewFile = 0
3829
3830 self.dataByFrame[self.idpulse_range1, :, :] = self.dataset[idrecord, 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
3844 self.dataByFrame[selectorById,:,:] = self.dataset[idrecord, self.idpulse_range2, :, :]
3845 self.radacTimeByFrame[selectorById] = self.radacHeaderObj.radacTime[idrecord, self.idpulse_range2]
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 3853 return datablock
3834 3854
@@ -3852,8 +3872,8 class AMISRReader(ProcessingUnit):
3852 3872
3853 3873 def readDataBlock(self):
3854 3874
3875 self.datablock = self.readSamples_version1(self.idrecord_count)
3855 3876 #self.datablock = self.readSamples(self.idrecord_count)
3856 self.datablock = self.readSamples(self.idrecord_count)
3857 3877 #print 'record:', self.idrecord_count
3858 3878
3859 3879 self.idrecord_count += 1
@@ -3905,9 +3925,7 class AMISRReader(ProcessingUnit):
3905 3925
3906 3926 if self.__hasNotDataInBuffer():
3907 3927 self.readNextBlock()
3908 # if not( self.readNextBlock() ):
3909 # return 0
3910 # self.getFirstHeader()
3928
3911 3929
3912 3930 if self.datablock == None: # setear esta condicion cuando no hayan datos por leers
3913 3931 self.dataOut.flagNoData = True
General Comments 0
You need to be logged in to leave comments. Login now