##// END OF EJS Templates
pruebas jrovoltage
José Chávez -
r963:4617926e8b88
parent child
Show More
@@ -217,7 +217,6 class ParameterConf():
217 self.id = str(new_id)
217 self.id = str(new_id)
218
218
219 def setup(self, id, name, value, format='str'):
219 def setup(self, id, name, value, format='str'):
220
221 self.id = str(id)
220 self.id = str(id)
222 self.name = name
221 self.name = name
223 if format == 'obj':
222 if format == 'obj':
@@ -757,26 +756,26 class ReadUnitConf(ProcUnitConf):
757
756
758 return self.ELEMENTNAME
757 return self.ELEMENTNAME
759
758
760 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, queue=None, **kwargs):
759 def setup(self, id, name, datatype, path='', startDate="", endDate="", startTime="",
760 endTime="", parentId=None, queue=None, server=None, **kwargs):
761
761
762 #Compatible with old signal chain version
762 #Compatible with old signal chain version
763 if datatype==None and name==None:
763 if datatype==None and name==None:
764 raise ValueError, "datatype or name should be defined"
764 raise ValueError, "datatype or name should be defined"
765
765
766 if name==None:
766 if name==None:
767 if 'Reader' in datatype:
767 if 'Reader' in datatype:
768 name = datatype
768 name = datatype
769 else:
769 else:
770 name = '%sReader' %(datatype)
770 name = '%sReader' %(datatype)
771
772 if datatype==None:
771 if datatype==None:
773 datatype = name.replace('Reader','')
772 datatype = name.replace('Reader','')
774
773
775 self.id = id
774 self.id = id
776 self.name = name
775 self.name = name
777 self.datatype = datatype
776 self.datatype = datatype
778
777 if path != '':
779 self.path = os.path.abspath(path)
778 self.path = os.path.abspath(path)
780 self.startDate = startDate
779 self.startDate = startDate
781 self.endDate = endDate
780 self.endDate = endDate
782 self.startTime = startTime
781 self.startTime = startTime
@@ -785,6 +784,7 class ReadUnitConf(ProcUnitConf):
785 self.inputId = '0'
784 self.inputId = '0'
786 self.parentId = parentId
785 self.parentId = parentId
787 self.queue = queue
786 self.queue = queue
787 self.server = server
788 self.addRunOperation(**kwargs)
788 self.addRunOperation(**kwargs)
789
789
790 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
790 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
@@ -826,16 +826,19 class ReadUnitConf(ProcUnitConf):
826
826
827 opObj = self.addOperation(name = 'run', optype = 'self')
827 opObj = self.addOperation(name = 'run', optype = 'self')
828
828
829 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
829 if self.server is None:
830 opObj.addParameter(name='path' , value=self.path, format='str')
830 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
831 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
831 opObj.addParameter(name='path' , value=self.path, format='str')
832 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
832 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
833 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
833 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
834 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
834 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
835 opObj.addParameter(name='queue' , value=self.queue, format='obj')
835 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
836
836 opObj.addParameter(name='queue' , value=self.queue, format='obj')
837 for key, value in kwargs.items():
837 for key, value in kwargs.items():
838 opObj.addParameter(name=key, value=value, format=type(value).__name__)
838 opObj.addParameter(name=key, value=value, format=type(value).__name__)
839 else:
840 opObj.addParameter(name='server' , value=self.server, format='str')
841
839
842
840 return opObj
843 return opObj
841
844
@@ -115,7 +115,6 class BasicHeader(Header):
115 dstFlag = None
115 dstFlag = None
116 errorCount = None
116 errorCount = None
117 datatime = None
117 datatime = None
118
119 __LOCALTIME = None
118 __LOCALTIME = None
120
119
121 def __init__(self, useLocalTime=True):
120 def __init__(self, useLocalTime=True):
@@ -134,8 +133,12 class BasicHeader(Header):
134 def read(self, fp):
133 def read(self, fp):
135
134
136 try:
135 try:
137 header = numpy.fromfile(fp, BASIC_STRUCTURE,1)
136 if hasattr(fp, 'read'):
138
137 print 'fromfile'
138 header = numpy.fromfile(fp, BASIC_STRUCTURE,1)
139 else:
140 print 'fromstring'
141 header = numpy.fromstring(fp, BASIC_STRUCTURE,1)
139 except Exception, e:
142 except Exception, e:
140 print "BasicHeader: "
143 print "BasicHeader: "
141 print e
144 print e
@@ -12,6 +12,7 import fnmatch
12 import inspect
12 import inspect
13 import time, datetime
13 import time, datetime
14 import traceback
14 import traceback
15 import zmq
15
16
16 try:
17 try:
17 from gevent import sleep
18 from gevent import sleep
@@ -993,12 +994,13 class JRODataReader(JRODataIO):
993 self.__isFirstTimeOnline = 0
994 self.__isFirstTimeOnline = 0
994
995
995 def __setNewBlock(self):
996 def __setNewBlock(self):
996
997 if self.server is None:
997 if self.fp == None:
998 if self.fp == None:
998 return 0
999 return 0
999
1000
1000 # if self.online:
1001 # if self.online:
1001 # self.__jumpToLastBlock()
1002 # self.__jumpToLastBlock()
1003 print 'xxxx'
1002
1004
1003 if self.flagIsNewFile:
1005 if self.flagIsNewFile:
1004 self.lastUTTime = self.basicHeaderObj.utc
1006 self.lastUTTime = self.basicHeaderObj.utc
@@ -1010,21 +1012,24 class JRODataReader(JRODataIO):
1010 return 0
1012 return 0
1011 else:
1013 else:
1012 return 1
1014 return 1
1013
1015 print 'xxxx'
1014 currentSize = self.fileSize - self.fp.tell()
1016 if self.server is None:
1015 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
1017 currentSize = self.fileSize - self.fp.tell()
1016
1018 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
1017 if (currentSize >= neededSize):
1019 if (currentSize >= neededSize):
1018 self.basicHeaderObj.read(self.fp)
1020 self.basicHeaderObj.read(self.fp)
1021 self.lastUTTime = self.basicHeaderObj.utc
1022 return 1
1023 else:
1024 self.basicHeaderObj.read(self.zHeader)
1019 self.lastUTTime = self.basicHeaderObj.utc
1025 self.lastUTTime = self.basicHeaderObj.utc
1020 return 1
1026 return 1
1021
1022 if self.__waitNewBlock():
1027 if self.__waitNewBlock():
1023 self.lastUTTime = self.basicHeaderObj.utc
1028 self.lastUTTime = self.basicHeaderObj.utc
1024 return 1
1029 return 1
1025
1030 if self.server is None:
1026 if not(self.setNextFile()):
1031 if not(self.setNextFile()):
1027 return 0
1032 return 0
1028
1033
1029 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
1034 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
1030 self.lastUTTime = self.basicHeaderObj.utc
1035 self.lastUTTime = self.basicHeaderObj.utc
@@ -1040,9 +1045,11 class JRODataReader(JRODataIO):
1040
1045
1041 #Skip block out of startTime and endTime
1046 #Skip block out of startTime and endTime
1042 while True:
1047 while True:
1048 print 'cxxxx'
1043 if not(self.__setNewBlock()):
1049 if not(self.__setNewBlock()):
1050 print 'returning'
1044 return 0
1051 return 0
1045
1052 print 'dxxx'
1046 if not(self.readBlock()):
1053 if not(self.readBlock()):
1047 return 0
1054 return 0
1048
1055
@@ -1275,20 +1282,19 class JRODataReader(JRODataIO):
1275 warnings=True,
1282 warnings=True,
1276 verbose=True,
1283 verbose=True,
1277 server=None):
1284 server=None):
1278
1279 if server is not None:
1285 if server is not None:
1280 server = kwargs.get('server', 'zmq.pipe')
1281 if 'tcp://' in server:
1286 if 'tcp://' in server:
1282 address = server
1287 address = server
1283 else:
1288 else:
1284 address = 'ipc:///tmp/%s' % server
1289 address = 'ipc:///tmp/%s' % server
1285 self.address = address
1290 self.server = address
1286 self.context = zmq.Context()
1291 self.context = zmq.Context()
1287 self.receiver = self.context.socket(zmq.PULL)
1292 self.receiver = self.context.socket(zmq.PULL)
1288 self.receiver.bind(self.address)
1293 self.receiver.bind(self.server)
1289 time.sleep(0.5)
1294 time.sleep(0.5)
1290 print '[Starting] ReceiverData from {}'.format(self.address)
1295 print '[Starting] ReceiverData from {}'.format(self.server)
1291 else:
1296 else:
1297 self.server = None
1292 if path == None:
1298 if path == None:
1293 raise ValueError, "[Reading] The path is not valid"
1299 raise ValueError, "[Reading] The path is not valid"
1294
1300
@@ -1494,13 +1500,11 class JRODataReader(JRODataIO):
1494 skip=skip,
1500 skip=skip,
1495 cursor=cursor,
1501 cursor=cursor,
1496 warnings=warnings,
1502 warnings=warnings,
1497 server=None,
1503 server=server,
1498 verbose=verbose)
1504 verbose=verbose)
1499 self.isConfig = True
1505 self.isConfig = True
1500 if self.server is None:
1506 print 'hola'
1501 self.getData()
1507 self.getData()
1502 else:
1503 self.getFromZMQ()
1504
1508
1505 class JRODataWriter(JRODataIO):
1509 class JRODataWriter(JRODataIO):
1506
1510
@@ -189,6 +189,7 class VoltageReader(JRODataReader, ProcessingUnit):
189 pts2read = self.processingHeaderObj.profilesPerBlock * self.processingHeaderObj.nHeights * self.systemHeaderObj.nChannels
189 pts2read = self.processingHeaderObj.profilesPerBlock * self.processingHeaderObj.nHeights * self.systemHeaderObj.nChannels
190 self.blocksize = pts2read
190 self.blocksize = pts2read
191
191
192
192
193
193 def readBlock(self):
194 def readBlock(self):
194 """
195 """
@@ -213,11 +214,23 class VoltageReader(JRODataReader, ProcessingUnit):
213 Exceptions:
214 Exceptions:
214 Si un bloque leido no es un bloque valido
215 Si un bloque leido no es un bloque valido
215 """
216 """
216 current_pointer_location = self.fp.tell()
217
217 junk = numpy.fromfile( self.fp, self.dtype, self.blocksize )
218 print 'READ BLOCK'
219 if self.server is not None:
220 self.zBlock = self.receiver.recv()
221 self.zHeader = self.zBlock[:24]
222 self.zDataBlock = self.zBlock[24:]
223 junk = numpy.fromstring(self.zDataBlock, numpy.dtype([('real','<i4'),('imag','<i4')]))
224 self.processingHeaderObj.profilesPerBlock = 240
225 self.processingHeaderObj.nHeights = 248
226 self.systemHeaderObj.nChannels
227 else:
228 current_pointer_location = self.fp.tell()
229 junk = numpy.fromfile( self.fp, self.dtype, self.blocksize )
218
230
219 try:
231 try:
220 junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) )
232 junk = junk.reshape( (self.processingHeaderObj.profilesPerBlock, self.processingHeaderObj.nHeights, self.systemHeaderObj.nChannels) )
233 print'junked'
221 except:
234 except:
222 #print "The read block (%3d) has not enough data" %self.nReadBlocks
235 #print "The read block (%3d) has not enough data" %self.nReadBlocks
223
236
@@ -302,12 +315,6 class VoltageReader(JRODataReader, ProcessingUnit):
302
315
303 return
316 return
304
317
305
306 def getFromZMQ(self):
307 self.dataOut = self.receiver.recv_pyobj()
308 print '[Receiving] {} - {}'.format(self.dataOut.type,
309 self.dataOut.datatime.ctime())
310
311 def getData(self):
318 def getData(self):
312 """
319 """
313 getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut
320 getData obtiene una unidad de datos del buffer de lectura, un perfil, y la copia al objeto self.dataOut
@@ -344,15 +351,15 class VoltageReader(JRODataReader, ProcessingUnit):
344 self.flagDiscontinuousBlock
351 self.flagDiscontinuousBlock
345 self.flagIsNewBlock
352 self.flagIsNewBlock
346 """
353 """
347
354 print 1
348 if self.flagNoMoreFiles:
355 if self.flagNoMoreFiles:
349 self.dataOut.flagNoData = True
356 self.dataOut.flagNoData = True
350 print 'Process finished'
357 print 'Process finished'
351 return 0
358 return 0
352
359 print 2
353 self.flagDiscontinuousBlock = 0
360 self.flagDiscontinuousBlock = 0
354 self.flagIsNewBlock = 0
361 self.flagIsNewBlock = 0
355
362 print 3
356 if self.__hasNotDataInBuffer():
363 if self.__hasNotDataInBuffer():
357
364
358 if not( self.readNextBlock() ):
365 if not( self.readNextBlock() ):
@@ -361,7 +368,7 class VoltageReader(JRODataReader, ProcessingUnit):
361 self.getFirstHeader()
368 self.getFirstHeader()
362
369
363 self.reshapeData()
370 self.reshapeData()
364
371 print 4
365 if self.datablock is None:
372 if self.datablock is None:
366 self.dataOut.flagNoData = True
373 self.dataOut.flagNoData = True
367 return 0
374 return 0
@@ -1,1 +1,1
1 <Project description="HF_EXAMPLE" id="191" name="test01"><ReadUnit datatype="Spectra" id="1911" inputId="0" name="SpectraReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="datatype" value="SpectraReader" /><Parameter format="str" id="191112" name="path" value="/home/nanosat/data/sp1_f0" /><Parameter format="date" id="191113" name="startDate" value="2017/01/28" /><Parameter format="date" id="191114" name="endDate" value="2017/01/28" /><Parameter format="time" id="191115" name="startTime" value="00:00:00" /><Parameter format="time" id="191116" name="endTime" value="23:59:59" /><Parameter format="int" id="191118" name="cursor" value="5" /><Parameter format="int" id="191119" name="skip" value="177" /><Parameter format="int" id="191120" name="walk" value="1" /><Parameter format="int" id="191121" name="verbose" value="1" /><Parameter format="int" id="191122" name="online" value="0" /></Operation></ReadUnit><ProcUnit datatype="Parameters" id="1913" inputId="1911" name="ParametersProc"><Operation id="19131" name="run" priority="1" type="self" /><Operation id="19132" name="SpectralMoments" priority="2" type="other" /><Operation id="19133" name="PublishData" priority="3" type="other"><Parameter format="int" id="191331" name="zeromq" value="1" /><Parameter format="bool" id="191332" name="verbose" value="0" /><Parameter format="int" id="191333" name="delay" value="0" /></Operation></ProcUnit><ProcUnit datatype="Spectra" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self" /></ProcUnit></Project>
1 <Project description="test" id="191" name="john"><ReadUnit datatype="VoltageReader" id="1911" inputId="0" name="VoltageReader"><Operation id="19111" name="run" priority="1" type="self"><Parameter format="str" id="191111" name="server" value="john" /></Operation></ReadUnit><ProcUnit datatype="SpectraProc" id="1912" inputId="1911" name="SpectraProc"><Operation id="19121" name="run" priority="1" type="self"><Parameter format="int" id="191211" name="nFFTPoints" value="64" /></Operation><Operation id="19122" name="SpectraPlot" priority="2" type="other"><Parameter format="int" id="191221" name="id" value="500" /><Parameter format="str" id="191222" name="wintitle" value="Jicamarca Radio Observatory" /><Parameter format="int" id="191223" name="showprofile" value="0" /></Operation></ProcUnit></Project> No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now