##// END OF EJS Templates
Multiprocessing for heispectra (Fits) all working
Multiprocessing for heispectra (Fits) all working

File last commit:

r1191:f1f11d1fc586
r1191:f1f11d1fc586
Show More
controller.py
1254 lines | 36.1 KiB | text/x-python | PythonLexer
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 '''
George Yong
Multiprocessing for Spectra (all operation) working
r1171 Updated on January , 2018, for multiprocessing purposes
Author: Sergio Cortez
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 Created on September , 2012
'''
George Yong
Multiprocessing for Spectra (all operation) working
r1171 from platform import python_version
Miguel Valdez
Version: 2.1.3.2...
r672 import sys
Julio Valdez
First Draft HDF5 IO module
r514 import ast
Miguel Valdez
GUI: minor changes
r687 import datetime
Miguel Valdez
Version: 2.1.3.2...
r672 import traceback
José Chávez
funcionando todo
r898 import math
José Chávez
finishing day, need testing
r931 import time
George Yong
Multiprocessing for Spectra (all operation) working
r1171 import zmq
Juan C. Espinoza
Change multiSchain by MPProject
r1052 from multiprocessing import Process, cpu_count
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 from threading import Thread
Miguel Valdez
r681 from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring
from xml.dom import minidom
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129 from schainpy.admin import Alarm, SchainWarning
George Yong
Multiprocessing for heispectra (Fits) all working
r1191 from schainpy.model import *
Juan C. Espinoza
Change multiSchain by MPProject
r1052 from schainpy.utils import log
George Yong
Multiprocessing for heispectra (Fits) all working
r1191
Juan C. Espinoza
Change multiSchain by MPProject
r1052
DTYPES = {
'Voltage': '.r',
'Spectra': '.pdata'
}
José Chávez
formatting
r1082
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def MPProject(project, n=cpu_count()):
'''
Project wrapper to run schain in n processes
'''
rconf = project.getReadUnitObj()
op = rconf.getOperationObj('run')
dt1 = op.getParameterValue('startDate')
dt2 = op.getParameterValue('endDate')
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 tm1 = op.getParameterValue('startTime')
tm2 = op.getParameterValue('endTime')
add multiSchain (@jchavez)
r892 days = (dt2 - dt1).days
José Chávez
formatting
r1082
for day in range(days + 1):
add multiSchain (@jchavez)
r892 skip = 0
cursor = 0
processes = []
Juan C. Espinoza
Change multiSchain by MPProject
r1052 dt = dt1 + datetime.timedelta(day)
dt_str = dt.strftime('%Y/%m/%d')
reader = JRODataReader()
paths, files = reader.searchFilesOffLine(path=rconf.path,
José Chávez
formatting
r1082 startDate=dt,
endDate=dt,
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 startTime=tm1,
endTime=tm2,
José Chávez
formatting
r1082 ext=DTYPES[rconf.datatype])
Juan C. Espinoza
Change multiSchain by MPProject
r1052 nFiles = len(files)
if nFiles == 0:
Juan C. Espinoza
Update setup.py and README
r999 continue
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 skip = int(math.ceil(nFiles / n))
José Chávez
formatting
r1082 while nFiles > cursor * skip:
rconf.update(startDate=dt_str, endDate=dt_str, cursor=cursor,
skip=skip)
p = project.clone()
Juan C. Espinoza
Change multiSchain by MPProject
r1052 p.start()
processes.append(p)
José Chávez
exiting processes properly
r924 cursor += 1
def beforeExit(exctype, value, trace):
add multiSchain (@jchavez)
r892 for process in processes:
process.terminate()
process.join()
George Yong
Python 2to3, Spectra (all operations) working
r1167 print(traceback.print_tb(trace))
Juan C. Espinoza
Now there are two receiver units one for data and one for plots
r957
José Chávez
exiting processes properly
r924 sys.excepthook = beforeExit
add multiSchain (@jchavez)
r892
for process in processes:
process.join()
José Chávez
exiting processes properly
r924 process.terminate()
J Gomez
antes de la nueva 2.3
r958
José Chávez
finishing day, need testing
r931 time.sleep(3)
add multiSchain (@jchavez)
r892
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def wait(context):
time.sleep(1)
c = zmq.Context()
receiver = c.socket(zmq.SUB)
receiver.connect('ipc:///tmp/schain_{}_pub'.format(self.id))
receiver.setsockopt(zmq.SUBSCRIBE, self.id.encode())
msg = receiver.recv_multipart()[1]
context.terminate()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 class ParameterConf():
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = None
name = None
value = None
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 format = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 __formated_value = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 ELEMENTNAME = 'Parameter'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __init__(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.format = 'str'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getElementName(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.ELEMENTNAME
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getValue(self):
Miguel Valdez
Signal Chain GUI...
r600
value = self.value
format = self.format
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 if self.__formated_value != None:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
add multiSchain (@jchavez)
r892 if format == 'obj':
return value
Miguel Valdez
Signal Chain GUI...
r600 if format == 'str':
Miguel Valdez
Signal Chain GUI v2.1
r596 self.__formated_value = str(value)
return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 if value == '':
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('%s: This parameter value is empty' % self.name)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'list':
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 strList = value.split(',')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = strList
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'intlist':
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Miguel Valdez
Some comments added to controller.py
r535 Example:
value = (0,1,2)
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 if type(new_value) not in (tuple, list):
new_value = [int(new_value)]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 self.__formated_value = new_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'floatlist':
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Miguel Valdez
Some comments added to controller.py
r535 Example:
value = (0.5, 1.4, 2.7)
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 if type(new_value) not in (tuple, list):
new_value = [float(new_value)]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bug fixed in controller.py when floatList is used
r741 self.__formated_value = new_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'date':
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 strList = value.split('/')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 intList = [int(x) for x in strList]
date = datetime.date(intList[0], intList[1], intList[2])
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = date
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'time':
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 strList = value.split(':')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 intList = [int(x) for x in strList]
time = datetime.time(intList[0], intList[1], intList[2])
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = time
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'pairslist':
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226 Example:
value = (0,1),(1,2)
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 if type(new_value) not in (tuple, list):
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('%s has to be a tuple or list of pairs' % value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 if type(new_value[0]) not in (tuple, list):
if len(new_value) != 2:
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('%s has to be a tuple or list of pairs' % value)
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = [new_value]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 for thisPair in new_value:
if len(thisPair) != 2:
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('%s has to be a tuple or list of pairs' % value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 self.__formated_value = new_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if format == 'multilist':
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Julio Valdez
First Draft HDF5 IO module
r514 Example:
value = (0,1,2),(3,4,5)
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Julio Valdez
First Draft HDF5 IO module
r514 multiList = ast.literal_eval(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 if type(multiList[0]) == int:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 multiList = ast.literal_eval('(' + value + ')')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = multiList
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bug fixed: translating float values to integer
r677 if format == 'bool':
value = int(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bug fixed: translating float values to integer
r677 if format == 'int':
value = float(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI...
r600 format_func = eval(format)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = format_func(value)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
Miguel Valdez
Signal Chain GUI v2.1
r596
def updateId(self, new_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(new_id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 def setup(self, id, name, value, format='str'):
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
add multiSchain (@jchavez)
r892 if format == 'obj':
self.value = value
else:
self.value = str(value)
Miguel Valdez
Some comments added to controller.py
r535 self.format = str.lower(format)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 self.getValue()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed in Signal Chain GUI:...
r643 return 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def update(self, name, value, format='str'):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 self.name = name
self.value = str(value)
self.format = format
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def makeXml(self, opElement):
José Chávez
funcionando todo
r898 if self.name not in ('queue',):
parmElement = SubElement(opElement, self.ELEMENTNAME)
parmElement.set('id', str(self.id))
parmElement.set('name', self.name)
parmElement.set('value', self.value)
parmElement.set('format', self.format)
George Yong
Fix Read function for CLI 'schain xml'
r1184
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def readXml(self, parmElement):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = parmElement.get('id')
self.name = parmElement.get('name')
self.value = parmElement.get('value')
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.format = str.lower(parmElement.get('format'))
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Compatible with old signal chain version
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 if self.format == 'int' and self.name == 'idfigure':
self.name = 'id'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 print('Parameter[%s]: name = %s, value = %s, format = %s, project_id = %s' % (self.id, self.name, self.value, self.format, self.project_id))
José Chávez
formatting
r1082
Juan C. Espinoza
Change multiSchain by MPProject
r1052 class OperationConf():
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 ELEMENTNAME = 'Operation'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __init__(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.id = '0'
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.name = None
self.priority = None
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.topic = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __getNewId(self):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 return int(self.id) * 10 + len(self.parmConfObjList) + 1
Miguel Valdez
Signal Chain GUI v2.1
r596
George Yong
Multiprocessing for Spectra (all operation) working
r1171 def getId(self):
return self.id
Miguel Valdez
Signal Chain GUI v2.1
r596 def updateId(self, new_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(new_id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 n = 1
for parmObj in self.parmConfObjList:
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 idParm = str(int(new_id) * 10 + n)
Miguel Valdez
Signal Chain GUI v2.1
r596 parmObj.updateId(idParm)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 n += 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getElementName(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.ELEMENTNAME
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getParameterObjList(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.parmConfObjList
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def getParameterObj(self, parameterName):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for parmConfObj in self.parmConfObjList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 if parmConfObj.name != parameterName:
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return parmConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return None
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getParameterObjfromValue(self, parameterValue):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for parmConfObj in self.parmConfObjList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 if parmConfObj.getValue() != parameterValue:
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return parmConfObj.getValue()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def getParameterValue(self, parameterName):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 parameterObj = self.getParameterObj(parameterName)
José Chávez
formatting
r1082
José Chávez
cambios xmax xmin
r1004 # if not parameterObj:
José Chávez
this fixes bug #1074 and bug #1101
r1011 # return None
José Chávez
formatting
r1082
Miguel Valdez
r577 value = parameterObj.getValue()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return value
ReceiverData Operation, test PlotData
r889
def getKwargs(self):
kwargs = {}
for parmConfObj in self.parmConfObjList:
if self.name == 'run' and parmConfObj.name == 'datatype':
continue
kwargs[parmConfObj.name] = parmConfObj.getValue()
return kwargs
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def setup(self, id, name, priority, type, project_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.project_id = project_id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
self.type = type
self.priority = priority
self.parmConfObjList = []
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def removeParameters(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for obj in self.parmConfObjList:
del obj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 self.parmConfObjList = []
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 def addParameter(self, name, value, format='str'):
José Chávez
formatting
r1082
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if value is None:
return None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = self.__getNewId()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 parmConfObj = ParameterConf()
Miguel Valdez
Bugs fixed in Signal Chain GUI:...
r643 if not parmConfObj.setup(id, name, value, format):
return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.parmConfObjList.append(parmConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return parmConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def changeParameter(self, name, value, format='str'):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 parmConfObj = self.getParameterObj(name)
parmConfObj.update(name, value, format)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return parmConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 def makeXml(self, procUnitElement):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 opElement = SubElement(procUnitElement, self.ELEMENTNAME)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 opElement.set('id', str(self.id))
opElement.set('name', self.name)
opElement.set('type', self.type)
opElement.set('priority', str(self.priority))
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for parmConfObj in self.parmConfObjList:
parmConfObj.makeXml(opElement)
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 def readXml(self, opElement, project_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = opElement.get('id')
self.name = opElement.get('name')
self.type = opElement.get('type')
self.priority = opElement.get('priority')
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.project_id = str(project_id) #yong
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Compatible with old signal chain version
# Use of 'run' method instead 'init'
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 if self.type == 'self' and self.name == 'init':
self.name = 'run'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.parmConfObjList = []
ReceiverData Operation, test PlotData
r889
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 parmElementList = opElement.iter(ParameterConf().getElementName())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for parmElement in parmElementList:
parmConfObj = ParameterConf()
parmConfObj.readXml(parmElement)
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Compatible with old signal chain version
# If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 if self.type != 'self' and self.name == 'Plot':
if parmConfObj.format == 'str' and parmConfObj.name == 'type':
self.name = parmConfObj.value
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.parmConfObjList.append(parmConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 print('%s[%s]: name = %s, type = %s, priority = %s, project_id = %s' % (self.ELEMENTNAME,
José Chávez
formatting
r1082 self.id,
self.name,
self.type,
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.priority,
self.project_id))
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for parmConfObj in self.parmConfObjList:
parmConfObj.printattr()
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 def createObject(self):
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 className = eval(self.name)
George Yong
Fix Read function for CLI 'schain xml'
r1184
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 if self.type == 'other':
opObj = className()
elif self.type == 'external':
kwargs = self.getKwargs()
opObj = className(self.id, self.project_id, **kwargs)
opObj.start()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return opObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 class ProcUnitConf():
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 ELEMENTNAME = 'ProcUnit'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __init__(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = None
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = None
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.inputId = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
self.procUnitObj = None
self.opObjDict = {}
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __getPriority(self):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 return len(self.opConfObjList) + 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __getNewId(self):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 return int(self.id) * 10 + len(self.opConfObjList) + 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getElementName(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.ELEMENTNAME
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getId(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 return self.id
Miguel Valdez
Signal Chain GUI v2.1
r596
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def updateId(self, new_id):
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
José Chávez
formatting
r1082 new_id = int(parentId) * 10 + (int(self.id) % 10)
new_inputId = int(parentId) * 10 + (int(self.inputId) % 10)
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # If this proc unit has not inputs
George Yong
Multiprocessing for Spectra (all operation) working
r1171 #if self.inputId == '0':
#new_inputId = 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 n = 1
for opConfObj in self.opConfObjList:
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 idOp = str(int(new_id) * 10 + n)
Miguel Valdez
Signal Chain GUI v2.1
r596 opConfObj.updateId(idOp)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 n += 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.parentId = str(parentId)
self.id = str(new_id)
George Yong
Multiprocessing for Spectra (all operation) working
r1171 #self.inputId = str(new_inputId)
'''
n = 1
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getInputId(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 return self.inputId
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getOperationObjList(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.opConfObjList
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def getOperationObj(self, name=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for opConfObj in self.opConfObjList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 if opConfObj.name != name:
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return opConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getOpObjfromParamValue(self, value=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for opConfObj in self.opConfObjList:
if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
continue
return opConfObj
return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getProcUnitObj(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.procUnitObj
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def setup(self, project_id, id, name, datatype, inputId):
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
id sera el topico a publicar
inputId sera el topico a subscribirse
'''
José Chávez
formatting
r1082 # Compatible with old signal chain version
if datatype == None and name == None:
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('datatype or name should be defined')
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 #Definir una condicion para inputId cuando sea 0
José Chávez
formatting
r1082 if name == None:
Miguel Valdez
Signal Chain GUI v2.1
r596 if 'Proc' in datatype:
name = datatype
else:
José Chávez
formatting
r1082 name = '%sProc' % (datatype)
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 if datatype == None:
datatype = name.replace('Proc', '')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.project_id = project_id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype = datatype
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.inputId = inputId
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.addOperation(name='run', optype='self')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def removeOperations(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for obj in self.opConfObjList:
del obj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 self.opConfObjList = []
self.addOperation(name='run')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 def addParameter(self, **kwargs):
Miguel Valdez
Signal Chain GUI updated:...
r580 '''
Juan C. Espinoza
Change multiSchain by MPProject
r1052 Add parameters to 'run' operation
Miguel Valdez
Signal Chain GUI updated:...
r580 '''
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 opObj = self.opConfObjList[0]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 opObj.addParameter(**kwargs)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 return opObj
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def addOperation(self, name, optype='self'):
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
Actualizacion - > proceso comunicacion
En el caso de optype='self', elminar. DEfinir comuncacion IPC -> Topic
definir el tipoc de socket o comunicacion ipc++
'''
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = self.__getNewId()
George Yong
Multiprocessing for Spectra (all operation) working
r1171 priority = self.__getPriority() # Sin mucho sentido, pero puede usarse
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 opConfObj = OperationConf()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 opConfObj.setup(id, name=name, priority=priority, type=optype, project_id=self.project_id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList.append(opConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return opConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 def makeXml(self, projectElement):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 procUnitElement = SubElement(projectElement, self.ELEMENTNAME)
procUnitElement.set('id', str(self.id))
procUnitElement.set('name', self.name)
procUnitElement.set('datatype', self.datatype)
procUnitElement.set('inputId', str(self.inputId))
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for opConfObj in self.opConfObjList:
Miguel Valdez
r681 opConfObj.makeXml(procUnitElement)
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 def readXml(self, upElement, project_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = upElement.get('id')
self.name = upElement.get('name')
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype = upElement.get('datatype')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.inputId = upElement.get('inputId')
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.project_id = str(project_id)
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if self.ELEMENTNAME == 'ReadUnit':
self.datatype = self.datatype.replace('Reader', '')
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if self.ELEMENTNAME == 'ProcUnit':
self.datatype = self.datatype.replace('Proc', '')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if self.inputId == 'None':
self.inputId = '0'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 opElementList = upElement.iter(OperationConf().getElementName())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for opElement in opElementList:
opConfObj = OperationConf()
George Yong
Fix Read function for CLI 'schain xml'
r1184 opConfObj.readXml(opElement, project_id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList.append(opConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 print('%s[%s]: name = %s, datatype = %s, inputId = %s, project_id = %s' % (self.ELEMENTNAME,
José Chávez
formatting
r1082 self.id,
self.name,
self.datatype,
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.inputId,
self.project_id))
José Chávez
formatting
r1082
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for opConfObj in self.opConfObjList:
opConfObj.printattr()
ReceiverData Operation, test PlotData
r889
def getKwargs(self):
opObj = self.opConfObjList[0]
kwargs = opObj.getKwargs()
return kwargs
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def createObjects(self):
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 Instancia de unidades de procesamiento.
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
George Yong
Multiprocessing for heispectra (Fits) all working
r1191
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 className = eval(self.name)
ReceiverData Operation, test PlotData
r889 kwargs = self.getKwargs()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 procUnitObj = className(self.id, self.inputId, self.project_id, **kwargs) # necesitan saber su id y su entrada por fines de ipc
log.success('creating process...', self.name)
ReceiverData Operation, test PlotData
r889
José Chávez
exiting processes properly
r924 for opConfObj in self.opConfObjList:
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177
if opConfObj.type == 'self' and opConfObj.name == 'run':
Juan C. Espinoza
Update version, fix kwargs for self operations (methods), Add SendToWeb...
r906 continue
José Chávez
formatting
r1082 elif opConfObj.type == 'self':
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 opObj = getattr(procUnitObj, opConfObj.name)
else:
opObj = opConfObj.createObject()
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 log.success('creating operation: {}, type:{}'.format(
opConfObj.name,
opConfObj.type), self.name)
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 procUnitObj.addOperation(opConfObj, opObj)
George Yong
Multiprocessing for Spectra (all operation) working
r1171
procUnitObj.start()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitObj = procUnitObj
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 def close(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 for opConfObj in self.opConfObjList:
if opConfObj.type == 'self':
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
opObj.close()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 self.procUnitObj.close()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 return
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 class ReadUnitConf(ProcUnitConf):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 ELEMENTNAME = 'ReadUnit'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __init__(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = None
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = None
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.inputId = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getElementName(self):
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 return self.ELEMENTNAME
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def setup(self, project_id, id, name, datatype, path='', startDate='', endDate='',
startTime='', endTime='', server=None, **kwargs):
Juan C. Espinoza
Change multiSchain by MPProject
r1052
George Yong
Multiprocessing for Spectra (all operation) working
r1171
'''
*****el id del proceso sera el Topico
Adicion de {topic}, si no esta presente -> error
kwargs deben ser trasmitidos en la instanciacion
'''
José Chávez
formatting
r1082 # Compatible with old signal chain version
if datatype == None and name == None:
George Yong
Python 2to3, Spectra (all operations) working
r1167 raise ValueError('datatype or name should be defined')
Juan C. Espinoza
Fix name and datatype in ReadUnitConf
r1088 if name == None:
Miguel Valdez
Signal Chain GUI v2.1
r596 if 'Reader' in datatype:
name = datatype
Juan C. Espinoza
Fix name and datatype in ReadUnitConf
r1088 datatype = name.replace('Reader','')
Miguel Valdez
Signal Chain GUI v2.1
r596 else:
Juan C. Espinoza
Fix name and datatype in ReadUnitConf
r1088 name = '{}Reader'.format(datatype)
if datatype == None:
if 'Reader' in name:
datatype = name.replace('Reader','')
else:
datatype = name
name = '{}Reader'.format(name)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = id
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.project_id = project_id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype = datatype
José Chávez
pruebas jrovoltage
r963 if path != '':
self.path = os.path.abspath(path)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
José Chávez
pruebas jrovoltage
r963 self.server = server
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 self.addRunOperation(**kwargs)
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def update(self, **kwargs):
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if 'datatype' in kwargs:
datatype = kwargs.pop('datatype')
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if 'Reader' in datatype:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 self.name = datatype
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 else:
José Chávez
formatting
r1082 self.name = '%sReader' % (datatype)
Juan C. Espinoza
Change multiSchain by MPProject
r1052 self.datatype = self.name.replace('Reader', '')
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 attrs = ('path', 'startDate', 'endDate',
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 'startTime', 'endTime')
José Chávez
formatting
r1082
Juan C. Espinoza
Change multiSchain by MPProject
r1052 for attr in attrs:
if attr in kwargs:
setattr(self, attr, kwargs.pop(attr))
José Chávez
formatting
r1082
Miguel Valdez
r577 self.updateRunOperation(**kwargs)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 def removeOperations(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 for obj in self.opConfObjList:
del obj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 def addRunOperation(self, **kwargs):
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 opObj = self.addOperation(name='run', optype='self')
ReceiverData Operation, test PlotData
r889
José Chávez
pruebas jrovoltage
r963 if self.server is None:
José Chávez
formatting
r1082 opObj.addParameter(
name='datatype', value=self.datatype, format='str')
Juan C. Espinoza
Change multiSchain by MPProject
r1052 opObj.addParameter(name='path', value=self.path, format='str')
José Chávez
formatting
r1082 opObj.addParameter(
name='startDate', value=self.startDate, format='date')
opObj.addParameter(
name='endDate', value=self.endDate, format='date')
opObj.addParameter(
name='startTime', value=self.startTime, format='time')
opObj.addParameter(
name='endTime', value=self.endTime, format='time')
George Yong
Python 2to3, Spectra (all operations) working
r1167 for key, value in list(kwargs.items()):
José Chávez
formatting
r1082 opObj.addParameter(name=key, value=value,
format=type(value).__name__)
José Chávez
pruebas jrovoltage
r963 else:
José Chávez
formatting
r1082 opObj.addParameter(name='server', value=self.server, format='str')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return opObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def updateRunOperation(self, **kwargs):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 opObj = self.getOperationObj(name='run')
Miguel Valdez
r577 opObj.removeParameters()
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 opObj.addParameter(name='datatype', value=self.datatype, format='str')
opObj.addParameter(name='path', value=self.path, format='str')
José Chávez
formatting
r1082 opObj.addParameter(
name='startDate', value=self.startDate, format='date')
Juan C. Espinoza
Change multiSchain by MPProject
r1052 opObj.addParameter(name='endDate', value=self.endDate, format='date')
José Chávez
formatting
r1082 opObj.addParameter(
name='startTime', value=self.startTime, format='time')
Juan C. Espinoza
Change multiSchain by MPProject
r1052 opObj.addParameter(name='endTime', value=self.endTime, format='time')
José Chávez
formatting
r1082
George Yong
Python 2to3, Spectra (all operations) working
r1167 for key, value in list(kwargs.items()):
José Chávez
formatting
r1082 opObj.addParameter(name=key, value=value,
format=type(value).__name__)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return opObj
José Chávez
formatting
r1082
George Yong
Fix Read function for CLI 'schain xml'
r1184 def readXml(self, upElement, project_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 self.id = upElement.get('id')
self.name = upElement.get('name')
self.datatype = upElement.get('datatype')
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.project_id = str(project_id) #yong
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if self.ELEMENTNAME == 'ReadUnit':
self.datatype = self.datatype.replace('Reader', '')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 opElementList = upElement.iter(OperationConf().getElementName())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 for opElement in opElementList:
opConfObj = OperationConf()
George Yong
Fix Read function for CLI 'schain xml'
r1184 opConfObj.readXml(opElement, project_id)
Miguel Valdez
r681 self.opConfObjList.append(opConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 if opConfObj.name == 'run':
self.path = opConfObj.getParameterValue('path')
self.startDate = opConfObj.getParameterValue('startDate')
self.endDate = opConfObj.getParameterValue('endDate')
self.startTime = opConfObj.getParameterValue('startTime')
self.endTime = opConfObj.getParameterValue('endTime')
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082
José Chávez
merge
r1040 class Project(Process):
Juan C. Espinoza
Change multiSchain by MPProject
r1052
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 ELEMENTNAME = 'Project'
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 def __init__(self):
Juan C. Espinoza
Change multiSchain by MPProject
r1052
José Chávez
merge
r1040 Process.__init__(self)
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.id = None
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.filename = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.description = None
Juan C. Espinoza
test alarm
r1126 self.email = None
Alarm working ok
r1130 self.alarm = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict = {}
Juan C. Espinoza
Change multiSchain by MPProject
r1052
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __getNewId(self):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 idList = list(self.procUnitConfObjDict.keys())
José Chávez
formatting
r1082 id = int(self.id) * 10
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r764 while True:
id += 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r764 if str(id) in idList:
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r764 break
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return str(id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getElementName(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return self.ELEMENTNAME
Miguel Valdez
r577
def getId(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return self.id
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 def updateId(self, new_id):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(new_id)
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 keyList = list(self.procUnitConfObjDict.keys())
Miguel Valdez
Signal Chain GUI v2.1
r596 keyList.sort()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 n = 1
newProcUnitConfObjDict = {}
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 for procKey in keyList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 procUnitConfObj = self.procUnitConfObjDict[procKey]
José Chávez
formatting
r1082 idProcUnit = str(int(self.id) * 10 + n)
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 procUnitConfObj.updateId(idProcUnit)
Miguel Valdez
Signal Chain GUI v2.1
r596 newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
n += 1
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.procUnitConfObjDict = newProcUnitConfObjDict
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def setup(self, id=1, name='', description='', email=None, alarm=[]):
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 print(' ')
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('*' * 60)
George Yong
Multiprocessing for Spectra (all operation) working
r1171 print('* Starting SIGNAL CHAIN PROCESSING (Multiprocessing) v%s *' % schainpy.__version__)
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('*' * 60)
George Yong
Multiprocessing for Spectra (all operation) working
r1171 print("* Python " + python_version() + " *")
print('*' * 19)
print(' ')
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.description = description
Juan C. Espinoza
test alarm
r1126 self.email = email
self.alarm = alarm
Miguel Valdez
r577
Juan C. Espinoza
test alarm
r1126 def update(self, **kwargs):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 for key, value in list(kwargs.items()):
Juan C. Espinoza
test alarm
r1126 setattr(self, key, value)
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def clone(self):
p = Project()
p.procUnitConfObjDict = self.procUnitConfObjDict
return p
Miguel Valdez
GUI: minor changes
r687 def addReadUnit(self, id=None, datatype=None, name=None, **kwargs):
Juan C. Espinoza
Change multiSchain by MPProject
r1052
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
Actualizacion:
Se agrego un nuevo argumento: topic -relativo a la forma de comunicar los procesos simultaneos
* El id del proceso sera el topico al que se deben subscribir los procUnits para recibir la informacion(data)
'''
Miguel Valdez
GUI: minor changes
r687 if id is None:
idReadUnit = self.__getNewId()
else:
idReadUnit = str(id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 readUnitConfObj = ReadUnitConf()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 readUnitConfObj.setup(self.id, idReadUnit, name, datatype, **kwargs)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return readUnitConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 def addProcUnit(self, inputId='0', datatype=None, name=None):
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 '''
Actualizacion:
Se agrego dos nuevos argumentos: topic_read (lee data de otro procUnit) y topic_write(escribe o envia data a otro procUnit)
Deberia reemplazar a "inputId"
** A fin de mantener el inputID, este sera la representaacion del topicoal que deben subscribirse. El ID propio de la intancia
(proceso) sera el topico de la publicacion, todo sera asignado de manera dinamica.
'''
idProcUnit = self.__getNewId() #Topico para subscripcion
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitConfObj = ProcUnitConf()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 procUnitConfObj.setup(self.id, idProcUnit, name, datatype, inputId) #topic_read, topic_write,
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return procUnitConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI updated:...
r587 def removeProcUnit(self, id):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 if id in list(self.procUnitConfObjDict.keys()):
Miguel Valdez
Signal Chain GUI updated:...
r587 self.procUnitConfObjDict.pop(id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def getReadUnitId(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 readUnitConfObj = self.getReadUnitObj()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return readUnitConfObj.id
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 def getReadUnitObj(self):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 for obj in list(self.procUnitConfObjDict.values()):
Juan C. Espinoza
Change multiSchain by MPProject
r1052 if obj.getElementName() == 'ReadUnit':
Miguel Valdez
r577 return obj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r577 return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getProcUnitObj(self, id=None, name=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 if id != None:
return self.procUnitConfObjDict[id]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 if name != None:
return self.getProcUnitObjByName(name)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bug fixed in SignalChain GUI:...
r581 def getProcUnitObjByName(self, name):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 for obj in list(self.procUnitConfObjDict.values()):
Miguel Valdez
Bug fixed in SignalChain GUI:...
r581 if obj.name == name:
return obj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bug fixed in SignalChain GUI:...
r581 return None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def procUnitItems(self):
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 return list(self.procUnitConfObjDict.items())
ReceiverData Operation, test PlotData
r889
def makeXml(self):
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 projectElement = Element('Project')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 projectElement.set('id', str(self.id))
projectElement.set('name', self.name)
projectElement.set('description', self.description)
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 for procUnitConfObj in list(self.procUnitConfObjDict.values()):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitConfObj.makeXml(projectElement)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.projectElement = projectElement
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: minor changes
r702 def writeXml(self, filename=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: minor changes
r702 if filename == None:
Miguel Valdez
v2.2.0: Controller updated
r708 if self.filename:
filename = self.filename
else:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 filename = 'schain.xml'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
controller.py: minor changes
r702 if not filename:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('filename has not been defined. Use setFilename(filename) for do it.')
Miguel Valdez
controller.py: minor changes
r702 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 abs_file = os.path.abspath(filename)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 if not os.access(os.path.dirname(abs_file), os.W_OK):
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('No write permission on %s' % os.path.dirname(abs_file))
Miguel Valdez
r681 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 if os.path.isfile(abs_file) and not(os.access(abs_file, os.W_OK)):
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('File %s already exists and it could not be overwriten' % abs_file)
Miguel Valdez
r681 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 self.makeXml()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 ElementTree(self.projectElement).write(abs_file, method='xml')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
v2.2.0: Controller updated
r708 self.filename = abs_file
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 return 1
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
José Chávez
formatting
r1082 def readXml(self, filename=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
new script "schain".
r830 if not filename:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('filename is not defined')
Miguel Valdez
new script "schain".
r830 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 abs_file = os.path.abspath(filename)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 if not os.path.isfile(abs_file):
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('%s file does not exist' % abs_file)
Miguel Valdez
r681 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.projectElement = None
self.procUnitConfObjDict = {}
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 try:
self.projectElement = ElementTree().parse(abs_file)
except:
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('Error reading %s, verify file format' % filename)
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.project = self.projectElement.tag
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id = self.projectElement.get('id')
self.name = self.projectElement.get('name')
José Chávez
formatting
r1082 self.description = self.projectElement.get('description')
readUnitElementList = self.projectElement.iter(
ReadUnitConf().getElementName())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for readUnitElement in readUnitElementList:
readUnitConfObj = ReadUnitConf()
George Yong
Fix Read function for CLI 'schain xml'
r1184 readUnitConfObj.readXml(readUnitElement, self.id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 procUnitElementList = self.projectElement.iter(
ProcUnitConf().getElementName())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for procUnitElement in procUnitElementList:
procUnitConfObj = ProcUnitConf()
George Yong
Fix Read function for CLI 'schain xml'
r1184 procUnitConfObj.readXml(procUnitElement, self.id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
v2.2.0: Controller updated
r708 self.filename = abs_file
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 return 1
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 def __str__(self):
ReceiverData Operation, test PlotData
r889
George Yong
Fix Read function for CLI 'schain xml'
r1184 print('Project[%s]: name = %s, description = %s, project_id = %s' % (self.id,
José Chávez
formatting
r1082 self.name,
George Yong
Fix Read function for CLI 'schain xml'
r1184 self.description,
self.project_id))
José Chávez
formatting
r1082
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 for procUnitConfObj in self.procUnitConfObjDict.values():
print(procUnitConfObj)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def createObjects(self):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 for procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.createObjects()
ReceiverData Operation, test PlotData
r889
Alarm working ok
r1130 def __handleError(self, procUnitConfObj, modes=None, stdout=True):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 import socket
ReceiverData Operation, test PlotData
r889
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129 if modes is None:
modes = self.alarm
Juan C. Espinoza
Set default alarms to none
r1163
if not self.alarm:
modes = []
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129
Miguel Valdez
GUI: minor changes
r687 err = traceback.format_exception(sys.exc_info()[0],
José Chávez
formatting
r1082 sys.exc_info()[1],
sys.exc_info()[2])
George Yong
Multiprocessing for Spectra (all operation) working
r1171
sound, email & popup alarm
r1128 log.error('{}'.format(err[-1]), procUnitConfObj.name)
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735
Juan C. Espinoza
Change multiSchain by MPProject
r1052 message = ''.join(err)
ReceiverData Operation, test PlotData
r889
Alarm working ok
r1130 if stdout:
sys.stderr.write(message)
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 subject = 'SChain v%s: Error running %s\n' % (
schainpy.__version__, procUnitConfObj.name)
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 subtitle = '%s: %s\n' % (
procUnitConfObj.getElementName(), procUnitConfObj.name)
subtitle += 'Hostname: %s\n' % socket.gethostbyname(
socket.gethostname())
subtitle += 'Working directory: %s\n' % os.path.abspath('./')
subtitle += 'Configuration file: %s\n' % self.filename
subtitle += 'Time: %s\n' % str(datetime.datetime.now())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
GUI: minor changes
r687 readUnitConfObj = self.getReadUnitObj()
if readUnitConfObj:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 subtitle += '\nInput parameters:\n'
José Chávez
formatting
r1082 subtitle += '[Data path = %s]\n' % readUnitConfObj.path
subtitle += '[Data type = %s]\n' % readUnitConfObj.datatype
subtitle += '[Start date = %s]\n' % readUnitConfObj.startDate
subtitle += '[End date = %s]\n' % readUnitConfObj.endDate
subtitle += '[Start time = %s]\n' % readUnitConfObj.startTime
subtitle += '[End time = %s]\n' % readUnitConfObj.endTime
ReceiverData Operation, test PlotData
r889
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129 a = Alarm(
modes=modes,
Juan C. Espinoza
test alarm
r1126 email=self.email,
message=message,
subject=subject,
subtitle=subtitle,
filename=self.filename
)
José Chávez
formatting
r1082
Alarm working ok
r1130 return a
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129
Miguel Valdez
Version: 2.1.3.2...
r672 def isPaused(self):
return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 def isStopped(self):
return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 def runController(self):
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
Miguel Valdez
Version: 2.1.3.2...
r672 returns 0 when this process has been stopped, 1 otherwise
Juan C. Espinoza
Change multiSchain by MPProject
r1052 '''
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 if self.isPaused():
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('Process suspended')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 while True:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 time.sleep(0.1)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 if not self.isPaused():
break
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 if self.isStopped():
break
ReceiverData Operation, test PlotData
r889
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('Process reinitialized')
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 if self.isStopped():
George Yong
Python 2to3, Spectra (all operations) working
r1167 print('Process stopped')
Miguel Valdez
Version: 2.1.3.2...
r672 return 0
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 return 1
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
def setFilename(self, filename):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 self.filename = filename
ReceiverData Operation, test PlotData
r889
George Yong
Multiprocessing for Spectra (all operation) working
r1171 def setProxyCom(self):
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177
if not os.path.exists('/tmp/schain'):
os.mkdir('/tmp/schain')
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.ctx = zmq.Context()
xpub = self.ctx.socket(zmq.XPUB)
xpub.bind('ipc:///tmp/schain/{}_pub'.format(self.id))
xsub = self.ctx.socket(zmq.XSUB)
xsub.bind('ipc:///tmp/schain/{}_sub'.format(self.id))
George Yong
Multiprocessing for Spectra (all operation) working
r1171
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 try:
zmq.proxy(xpub, xsub)
Juan C. Espinoza
New plotting architecture with buffering/throttle capabilities
r1187 except: # zmq.ContextTerminated:
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 xpub.close()
xsub.close()
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def run(self):
José Chávez
cambios xmax xmin
r1004
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 log.success('Starting {}: {}'.format(self.name, self.id), tag='')
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 self.start_time = time.time()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 self.createObjects()
# t = Thread(target=wait, args=(self.ctx, ))
# t.start()
George Yong
Multiprocessing for Spectra (all operation) working
r1171 self.setProxyCom()
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177
George Yong
Multiprocessing for Spectra (all operation) working
r1171 # Iniciar todos los procesos .start(), monitoreo de procesos. ELiminar lo de abajo
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
New plotting architecture with buffering/throttle capabilities
r1187 log.success('{} Done (time: {}s)'.format(
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 self.name,
Juan C. Espinoza
Review MP changes, three types of operations: self, other and external
r1177 time.time()-self.start_time))