##// END OF EJS Templates
Bug when cspc data doesn't have all pairs...
Bug when cspc data doesn't have all pairs...

File last commit:

r1159:d0480f11c356 merge
r1162:8e271e9ed53c
Show More
controller.py
1337 lines | 36.8 KiB | text/x-python | PythonLexer
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 '''
Created on September , 2012
ReceiverData Operation, test PlotData
r889 @author:
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 '''
ReceiverData Operation, test PlotData
r889
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
Juan C. Espinoza
Change multiSchain by MPProject
r1052 from multiprocessing import Process, cpu_count
Miguel Valdez
Version: 2.1.3.2...
r672
Miguel Valdez
r681 from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring
from xml.dom import minidom
Juan C. Espinoza
Change multiSchain by MPProject
r1052 import schainpy
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129 from schainpy.admin import Alarm, SchainWarning
Miguel Valdez
r681 from schainpy.model import *
Juan C. Espinoza
Change multiSchain by MPProject
r1052 from schainpy.utils import log
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()
José Chávez
nada
r925 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
José Chávez
formatting
r1082
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 == '':
José Chávez
formatting
r1082 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):
José Chávez
formatting
r1082 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:
José Chávez
formatting
r1082 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:
José Chávez
formatting
r1082 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)
ReceiverData Operation, test PlotData
r889
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
José Chávez
formatting
r1082 print 'Parameter[%s]: name = %s, value = %s, format = %s' % (self.id, self.name, self.value, self.format)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Juan C. Espinoza
Change multiSchain by MPProject
r1052 class OperationConf():
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = None
name = None
priority = None
type = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 parmConfObjList = []
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
self.type = 'self'
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
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def setup(self, id, name, priority, type):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
self.type = type
self.priority = priority
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def readXml(self, opElement):
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')
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
José Chávez
formatting
r1082 print '%s[%s]: name = %s, type = %s, priority = %s' % (self.ELEMENTNAME,
self.id,
self.name,
self.type,
self.priority)
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
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def createObject(self, plotter_queue=None):
ReceiverData Operation, test PlotData
r889
José Chávez
exiting processes properly
r924 if self.type == 'self':
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise ValueError, 'This operation type cannot be created'
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 if self.type == 'plotter':
Miguel Valdez
v2.2.0: Controller updated
r708 if not plotter_queue:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise ValueError, 'plotter_queue is not defined. Use:\nmyProject = Project()\nmyProject.setPlotterQueue(plotter_queue)'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 opObj = Plotter(self.name, plotter_queue)
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 if self.type == 'external' or self.type == 'other':
José Chávez
exiting processes properly
r924
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 className = eval(self.name)
ReceiverData Operation, test PlotData
r889 kwargs = self.getKwargs()
José Chávez
exiting processes properly
r924
ReceiverData Operation, test PlotData
r889 opObj = className(**kwargs)
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 id = None
name = None
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 datatype = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 inputId = None
Miguel Valdez
r577 parentId = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 opConfObjList = []
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitObj = None
opObjList = []
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
self.inputId = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
def updateId(self, new_id, parentId=parentId):
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
Signal Chain GUI v2.1
r596 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)
self.inputId = str(new_inputId)
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
r577 def setup(self, id, name, datatype, inputId, parentId=None):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Compatible with old signal chain version
if datatype == None and name == None:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise ValueError, 'datatype or name should be defined'
ReceiverData Operation, test PlotData
r889
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)
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.inputId = inputId
Miguel Valdez
r577 self.parentId = parentId
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def addOperation(self, name, optype='self'):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = self.__getNewId()
ReceiverData Operation, test PlotData
r889 priority = self.__getPriority()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 opConfObj = OperationConf()
opConfObj.setup(id, name=name, priority=priority, type=optype)
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def readXml(self, upElement):
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')
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()
opConfObj.readXml(opElement)
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
José Chávez
formatting
r1082 print '%s[%s]: name = %s, datatype = %s, inputId = %s' % (self.ELEMENTNAME,
self.id,
self.name,
self.datatype,
self.inputId)
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
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def createObjects(self, plotter_queue=None):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 className = eval(self.name)
ReceiverData Operation, test PlotData
r889 kwargs = self.getKwargs()
procUnitObj = className(**kwargs)
José Chávez
exiting processes properly
r924 for opConfObj in self.opConfObjList:
José Chávez
formatting
r1082 if opConfObj.type == 'self' and self.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':
procUnitObj.addOperationKwargs(
opConfObj.id, **opConfObj.getKwargs())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 opObj = opConfObj.createObject(plotter_queue)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opObjDict[opConfObj.id] = opObj
José Chávez
exiting processes properly
r924
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitObj.addOperation(opObj, opConfObj.id)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitObj = procUnitObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return procUnitObj
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def run(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for opConfObj in self.opConfObjList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 kwargs = {}
for parmConfObj in opConfObj.getParameterObjList():
Miguel Valdez
r577 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
continue
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 kwargs[parmConfObj.name] = parmConfObj.getValue()
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 sts = self.procUnitObj.call(opType=opConfObj.type,
opName=opConfObj.name,
opId=opConfObj.id)
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = is_ok or sts
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 return is_ok
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 path = None
startDate = None
endDate = None
startTime = None
endTime = None
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
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.parentId = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
self.opObjList = []
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
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def setup(self, id, name, datatype, path='', startDate='', endDate='',
startTime='', endTime='', parentId=None, server=None, **kwargs):
José Chávez
formatting
r1082 # Compatible with old signal chain version
if datatype == None and name == None:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 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
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
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.inputId = '0'
self.parentId = parentId
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',
'startTime', 'endTime', 'parentId')
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
Signal Chain GUI v2.1
r596 self.inputId = '0'
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
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 def addRunOperation(self, **kwargs):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 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')
José Chávez
pruebas jrovoltage
r963 for key, value in 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
Miguel Valdez
r577 for key, value in 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
Miguel Valdez
r681 def readXml(self, upElement):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
r681 self.id = upElement.get('id')
self.name = upElement.get('name')
self.datatype = upElement.get('datatype')
self.inputId = upElement.get('inputId')
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 if self.inputId == 'None':
self.inputId = '0'
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()
opConfObj.readXml(opElement)
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
Controlador de Signal Chain finalizado....
r197 id = None
Juan C. Espinoza
Change multiSchain by MPProject
r1052 # name = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 description = None
Miguel Valdez
r681 filename = None
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitConfObjDict = None
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
External plotter simplified.
r716 plotterQueue = None
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 def __init__(self, plotter_queue=None):
José Chávez
merge
r1040 Process.__init__(self)
Juan C. Espinoza
test alarm
r1126 self.id = 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
External plotter simplified.
r716 self.plotterQueue = plotter_queue
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
Miguel Valdez
r764 idList = self.procUnitConfObjDict.keys()
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
Signal Chain GUI v2.1
r596 keyList = self.procUnitConfObjDict.keys()
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)
procUnitConfObj.updateId(idProcUnit, parentId=self.id)
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
Alarm working ok
r1130 def setup(self, id, name='', description='', email=None, alarm=[3]):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 print
José Chávez
formatting
r1082 print '*' * 60
Juan C. Espinoza
Change multiSchain by MPProject
r1052 print ' Starting SIGNAL CHAIN PROCESSING v%s ' % schainpy.__version__
José Chávez
formatting
r1082 print '*' * 60
Juan C. Espinoza
Change multiSchain by MPProject
r1052 print
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Juan C. Espinoza
test alarm
r1126 self.description = description
self.email = email
self.alarm = alarm
Miguel Valdez
r577
Juan C. Espinoza
test alarm
r1126 def update(self, **kwargs):
ReceiverData Operation, test PlotData
r889
Hotfix in controller.Project.update()
r1133 for key, value in 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
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()
José Chávez
formatting
r1082 readUnitConfObj.setup(idReadUnit, name, datatype,
parentId=self.id, **kwargs)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 idProcUnit = self.__getNewId()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 procUnitConfObj = ProcUnitConf()
José Chávez
formatting
r1082 procUnitConfObj.setup(idProcUnit, name, datatype,
inputId, parentId=self.id)
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
Signal Chain GUI updated:...
r587 if id in self.procUnitConfObjDict.keys():
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
Miguel Valdez
r577 for obj in 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
Miguel Valdez
Bug fixed in SignalChain GUI:...
r581 for obj in self.procUnitConfObjDict.values():
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
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 return 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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for procUnitConfObj in self.procUnitConfObjDict.values():
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:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 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):
José Chávez
formatting
r1082 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)):
José Chávez
formatting
r1082 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:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 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):
José Chávez
formatting
r1082 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:
José Chávez
formatting
r1082 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()
readUnitConfObj.readXml(readUnitElement)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if readUnitConfObj.parentId == None:
readUnitConfObj.parentId = self.id
ReceiverData Operation, test PlotData
r889
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()
procUnitConfObj.readXml(procUnitElement)
ReceiverData Operation, test PlotData
r889
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if procUnitConfObj.parentId == None:
procUnitConfObj.parentId = self.id
ReceiverData Operation, test PlotData
r889
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 print 'Project[%s]: name = %s, description = %s' % (self.id,
self.name,
self.description)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.printattr()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def createObjects(self):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for procUnitConfObj in self.procUnitConfObjDict.values():
Miguel Valdez
External plotter simplified.
r716 procUnitConfObj.createObjects(self.plotterQueue)
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 def __connect(self, objIN, thisObj):
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 thisObj.setInput(objIN.getOutputObj())
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def connectObjects(self):
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 for thisPUConfObj in self.procUnitConfObjDict.values():
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 inputId = thisPUConfObj.getInputId()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 if int(inputId) == 0:
continue
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Get input object
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 puConfINObj = self.procUnitConfObjDict[inputId]
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 puObjIN = puConfINObj.getProcUnitObj()
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Get current object
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 thisPUObj = thisPUConfObj.getProcUnitObj()
ReceiverData Operation, test PlotData
r889
Daniel Valdez
This is the new organization by packages and scripts for Signal Chain, this version contains new features and bugs fixed until August 2014
r487 self.__connect(puObjIN, thisPUObj)
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
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])
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():
Juan C. Espinoza
Change multiSchain by MPProject
r1052 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
Juan C. Espinoza
Change multiSchain by MPProject
r1052 print 'Process reinitialized'
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 if self.isStopped():
Juan C. Espinoza
Change multiSchain by MPProject
r1052 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
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def setPlotterQueue(self, plotter_queue):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise NotImplementedError, 'Use schainpy.controller_api.ControllerThread instead Project class'
Miguel Valdez
External plotter simplified.
r716
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def getPlotterQueue(self):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise NotImplementedError, 'Use schainpy.controller_api.ControllerThread instead Project class'
Miguel Valdez
External plotter simplified.
r716
def useExternalPlotter(self):
ReceiverData Operation, test PlotData
r889
Juan C. Espinoza
Change multiSchain by MPProject
r1052 raise NotImplementedError, 'Use schainpy.controller_api.ControllerThread instead Project class'
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
Change multiSchain by MPProject
r1052 log.success('Starting {}'.format(self.name))
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 self.start_time = time.time()
José Chávez
merge
r1040 self.createObjects()
self.connectObjects()
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 keyList = self.procUnitConfObjDict.keys()
keyList.sort()
ReceiverData Operation, test PlotData
r889
Alarm working ok
r1130 err = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 while(True):
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 for procKey in keyList:
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 procUnitConfObj = self.procUnitConfObjDict[procKey]
ReceiverData Operation, test PlotData
r889
Miguel Valdez
Version: 2.1.3.2...
r672 try:
sts = procUnitConfObj.run()
is_ok = is_ok or sts
Now alarm is a process, add SchainWarning exception for handling non-stop exceptions
r1129 except SchainWarning:
Alarm working ok
r1130 err = self.__handleError(procUnitConfObj, modes=[2, 3], stdout=False)
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 except KeyboardInterrupt:
is_ok = False
break
Miguel Valdez
GUI: minor changes
r687 except ValueError, e:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 time.sleep(0.5)
Alarm working ok
r1130 err = self.__handleError(procUnitConfObj)
Miguel Valdez
GUI: minor changes
r687 is_ok = False
break
Miguel Valdez
Version: 2.1.3.2...
r672 except:
Juan C. Espinoza
Change multiSchain by MPProject
r1052 time.sleep(0.5)
Alarm working ok
r1130 err = self.__handleError(procUnitConfObj)
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
break
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # If every process unit finished so end process
Miguel Valdez
Version: 2.1.3.2...
r672 if not(is_ok):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 break
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
Miguel Valdez
Version: 2.1.3.2...
r672 if not self.runController():
Miguel Valdez
r577 break
ReceiverData Operation, test PlotData
r889
José Chávez
formatting
r1082 # Closing every process
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 for procKey in keyList:
procUnitConfObj = self.procUnitConfObjDict[procKey]
procUnitConfObj.close()
Juan C. Espinoza
Change multiSchain by MPProject
r1052
Alarm working ok
r1130 if err is not None:
err.start()
# err.join()
Juan C. Espinoza
set new matplotlib version in setup, improved searchFiles for multiprocessing
r1112 log.success('{} finished (time: {}s)'.format(
self.name,
time.time()-self.start_time))