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