##// 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
@@ -584,36 +586,38 class VoltageReader(DataReader):
584 586 self.flagResetProcessing = 0
585 587 self.flagIsNewBlock = 0
586 588
587 if self.__hasNotDataInBuffer():
588 self.readNextBlock()
589
589 if self.__hasNotDataInBuffer():
590 self.readNextBlock()
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 self.m_Voltage.m_BasicHeader.utc = time
604 self.m_Voltage.data = data
607 self.m_Voltage.m_BasicHeader.utc = time
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
@@ -747,10 +754,17 class VoltageWriter(DataWriter):
747 754 return 1
748 755
749 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 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)
803
804 self.__buffer.fill(0)
805
789 806 self.__buffer_id = 0
790 807 self.__setNextFile()
791 808
792 self.__setHeaderByObj()
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))
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():
814
815 self.__getHeader()
807 816 self.writeNextBlock()
808 817
809
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()
@@ -899,7 +907,7 class VoltageWriter(DataWriter):
899 907 print "file access denied:%s"%fileTable
900 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 913 if format == 'hdf5':
@@ -914,16 +922,24 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'))
926 937
938 # if not(self.__setNextFile()):
939 # return 0
940 return 1
941
942
927 943
928 944
929 945 No newline at end of file
@@ -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)
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 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))
52
55 # self.writerObj.putData()
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