##// END OF EJS Templates
Optimización del modulo de escritura de voltajes.
Miguel Valdez -
r23:7fedb37b4f03
parent child
Show More
@@ -180,7 +180,7 class VoltageReader(DataReader):
180 180
181 181 self.idProfile = 0
182 182
183 self.__buffer = 0
183 self.__buffer = None
184 184
185 185 self.__buffer_id = 9999
186 186
@@ -542,6 +542,8 class VoltageReader(DataReader):
542 542 self.filenameList = filenameList
543 543 self.online = online
544 544
545 return 1
546
545 547 def readNextBlock(self):
546 548 """
547 549 readNextBlock establece un nuevo bloque de datos a leer y los lee, si es que no existiese
@@ -587,33 +589,35 class VoltageReader(DataReader):
587 589 if self.__hasNotDataInBuffer():
588 590 self.readNextBlock()
589 591
592 self.m_Voltage.m_BasicHeader = self.m_BasicHeader.copy()
593 self.m_Voltage.m_ProcessingHeader = self.m_ProcessingHeader.copy()
594 self.m_Voltage.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
595 self.m_Voltage.m_SystemHeader = self.m_SystemHeader.copy()
596
597 self.m_Voltage.heights = self.__heights
598 self.m_Voltage.dataType = self.__dataType
599
590 600 if self.noMoreFiles == 1:
591 601 print 'Process finished'
592 602 return None
593 603
594 604 #data es un numpy array de 3 dmensiones (perfiles, alturas y canales)
595 data = self.__buffer[self.__buffer_id,:,:]
596 605
597 606 time = self.m_BasicHeader.utc + self.__buffer_id*self.__ippSeconds
598
599 self.m_Voltage.m_BasicHeader = self.m_BasicHeader.copy()
600 self.m_Voltage.m_ProcessingHeader = self.m_ProcessingHeader.copy()
601 self.m_Voltage.m_RadarControllerHeader = self.m_RadarControllerHeader.copy()
602 self.m_Voltage.m_SystemHeader = self.m_SystemHeader.copy()
603 607 self.m_Voltage.m_BasicHeader.utc = time
604 self.m_Voltage.data = data
608 self.m_Voltage.data = self.__buffer[self.__buffer_id,:,:]
605 609 self.m_Voltage.flagNoData = False
606 610 self.m_Voltage.flagResetProcessing = self.flagResetProcessing
607 self.m_Voltage.heights = self.__heights
611
608 612 self.m_Voltage.idProfile = self.idProfile
609 self.m_Voltage.dataType = self.__dataType
613
610 614
611 615 self.__buffer_id += 1
612 616 self.idProfile += 1
613 617
614 618 #call setData - to Data Object
615 619
616 return data
620 return 1
617 621
618 622 class VoltageWriter(DataWriter):
619 623 __configHeaderFile = 'wrSetHeadet.txt'
@@ -637,7 +641,7 class VoltageWriter(DataWriter):
637 641
638 642 self.__flagIsNewFile = 1
639 643
640 self.__buffer = 0
644 self.__buffer = None
641 645
642 646 self.__buffer_id = 0
643 647
@@ -645,6 +649,8 class VoltageWriter(DataWriter):
645 649
646 650 self.__ext = None
647 651
652 self.__shapeBuffer = None
653
648 654 self.nWriteBlocks = 0
649 655
650 656 self.flagIsNewBlock = 0
@@ -731,8 +737,9 class VoltageWriter(DataWriter):
731 737 return 1
732 738
733 739 def __setNewBlock(self):
740
734 741 if self.__fp == None:
735 return 0
742 self.__setNextFile()
736 743
737 744 if self.__flagIsNewFile:
738 745 return 1
@@ -748,9 +755,16 class VoltageWriter(DataWriter):
748 755
749 756 def __writeBlock(self):
750 757
751 self.__buffer.tofile(self.__fp)
758 data = numpy.zeros(self.__shapeBuffer, self.__dataType)
759
760 data['real'] = self.__buffer.real
761 data['imag'] = self.__buffer.imag
752 762
753 self.__buffer = numpy.array([],self.__dataType)
763 data = data.reshape((-1))
764
765 data.tofile(self.__fp)
766
767 self.__buffer.fill(0)
754 768
755 769 self.__buffer_id = 0
756 770
@@ -779,41 +793,35 class VoltageWriter(DataWriter):
779 793 return 0
780 794
781 795 def putData(self):
796
782 797 self.flagIsNewBlock = 0
783 798
784 799 if self.m_Voltage.flagNoData:
785 return None
800 return 0
786 801
787 802 if self.m_Voltage.flagResetProcessing:
788 self.__buffer = numpy.array([],self.__dataType)
789 self.__buffer_id = 0
790 self.__setNextFile()
791
792 self.__setHeaderByObj()
793
794 shape = self.m_Voltage.data.shape
795 data = numpy.zeros(shape,self.__dataType)
796 803
797 data['real'] = self.m_Voltage.data.real
798 data['imag'] = self.m_Voltage.data.imag
804 self.__buffer.fill(0)
799 805
800 data = data.reshape((-1))
806 self.__buffer_id = 0
807 self.__setNextFile()
801 808
802 self.__buffer = numpy.hstack((self.__buffer,data))
809 self.__buffer[self.__buffer_id,:,:] = self.m_Voltage.data
803 810
804 811 self.__buffer_id += 1
805 812
806 813 if self.__hasAllDataInBuffer():
807 self.writeNextBlock()
808 814
815 self.__getHeader()
816 self.writeNextBlock()
809 817
810 818 if self.noMoreFiles:
811 print 'Process finished'
812 return None
819 #print 'Process finished'
820 return 0
813 821
814 822 return 1
815 823
816 def __setHeaderByObj(self):
824 def __getHeader(self):
817 825 self.m_BasicHeader = self.m_Voltage.m_BasicHeader.copy()
818 826 self.m_SystemHeader = self.m_Voltage.m_SystemHeader.copy()
819 827 self.m_RadarControllerHeader = self.m_Voltage.m_RadarControllerHeader.copy()
@@ -914,15 +922,23 class VoltageWriter(DataWriter):
914 922
915 923 #call to config_headers
916 924 #self.__setHeaderByFile()
917 self.__setHeaderByObj()
925
918 926 self.__path = path
919 927 self.__setFile = set - 1
920 928 self.__ext = ext
921 929 self.__format = format
922 self.__buffer = numpy.array([],self.__dataType)
923 930
924 if not(self.__setNextFile()):
925 return 0
931 self.__getHeader()
932 self.__shapeBuffer = (self.m_ProcessingHeader.profilesPerBlock,
933 self.m_ProcessingHeader.numHeights,
934 self.m_SystemHeader.numChannels )
935
936 self.__buffer = numpy.zeros(self.__shapeBuffer, numpy.dtype('complex'))
937
938 # if not(self.__setNextFile()):
939 # return 0
940 return 1
941
926 942
927 943
928 944
@@ -8,7 +8,7 import os, sys
8 8 import time, datetime
9 9
10 10 from Model.Voltage import Voltage
11 from IO.VoltageIO import VoltageReader
11 from IO.VoltageIO import *
12 12 from Graphics.VoltagePlot import Osciloscope
13 13
14 14 class TestSChain():
@@ -24,7 +24,11 class TestSChain():
24 24
25 25 self.path = '/home/roj-idl71/Data/RAWDATA/DP_Faraday/'
26 26 self.path = '/Users/danielangelsuarezmunoz/Documents/Projects/testWR'
27 self.path = '/home/roj-idl71/Data/RAWDATA/IMAGING'
28 self.path = '/home/roj-idl71/tmp/data'
27 29 #self.path = '/remote/puma/2004_11/DVD/'
30
31 self.ppath = "/home/roj-idl71/tmp/data"
28 32 self.startDateTime = datetime.datetime(2004,5,1,17,49,0)
29 33 self.endDateTime = datetime.datetime(2012,5,1,18,10,0)
30 34
@@ -33,26 +37,37 class TestSChain():
33 37 self.voltageObj = Voltage()
34 38 self.readerObj = VoltageReader(self.voltageObj)
35 39 self.plotObj = Osciloscope(self.voltageObj)
40 self.writerObj = VoltageWriter(self.voltageObj)
41
42 if not(self.readerObj.setup(self.path, self.startDateTime, self.endDateTime)):
43 sys.exit(0)
36 44
37 self.readerObj.setup(self.path, self.startDateTime, self.endDateTime)
45 if not(self.writerObj.setup(self.ppath)):
46 sys.exit(0)
38 47
39 48 def testSChain(self):
40 49
50 ini = time.time()
41 51 while(True):
42
43 52 self.readerObj.getData()
44 53 self.plotObj.plotData(idProfile = 1, type='iq', ymin = -100, ymax = 100)
45 54
46 if self.readerObj.flagResetProcessing:
47 print 'jump'
48
49 # if self.readerObj.flagIsNewBlock:
50 # print 'Block No %04d, Time: %s'%(self.readerObj.nReadBlocks,
51 # datetime.datetime.fromtimestamp(self.readerObj.m_BasicHeader.utc))
55 # self.writerObj.putData()
52 56
53 57 if self.readerObj.noMoreFiles:
54 58 break
55 59
60 if self.readerObj.flagIsNewBlock:
61 print 'Block No %04d, Time: %s' %(self.readerObj.nReadBlocks,
62 datetime.datetime.fromtimestamp(self.readerObj.m_BasicHeader.utc),)
63 fin = time.time()
64 print 'Tiempo de un bloque leido y escrito: [%6.5f]' %(fin - ini)
65 ini = time.time()
66
67
68
69
70
56 71 self.plotObj.end()
57 72
58 73 if __name__ == '__main__':
General Comments 0
You need to be logged in to leave comments. Login now