##// END OF EJS Templates

File last commit:

r577:bea3bacb993a
r577:bea3bacb993a
Show More
controller.py
1023 lines | 33.0 KiB | text/x-python | PythonLexer
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 '''
Created on September , 2012
@author:
'''
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 from xml.etree.ElementTree import Element, SubElement
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 from xml.etree import ElementTree as ET
from xml.dom import minidom
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 #import datetime
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 from model import *
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Julio Valdez
First Draft HDF5 IO module
r514 import ast
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
rough_string = ET.tostring(elem, 'utf-8')
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
class ParameterConf():
id = None
name = None
value = None
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 format = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
controller.py: Some comments added
r529 __formated_value = None
Miguel Valdez
Optimizacion del calculo del valor del parametro
r243
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 ELEMENTNAME = 'Parameter'
def __init__(self):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.format = 'str'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def getElementName(self):
return self.ELEMENTNAME
def getValue(self):
Miguel Valdez
controller.py: Some comments added
r529 if self.__formated_value != None:
Miguel Valdez
Optimizacion del calculo del valor del parametro
r243
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
Miguel Valdez
Optimizacion del calculo del valor del parametro
r243
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 value = self.value
Miguel Valdez
Some comments added to controller.py
r535 if self.format == 'bool':
value = int(value)
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 if self.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(',')
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = strList
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 if self.format == 'intlist':
Miguel Valdez
Some comments added to controller.py
r535 """
Example:
value = (0,1,2)
"""
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]
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = intList
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 if self.format == 'floatlist':
Miguel Valdez
Some comments added to controller.py
r535 """
Example:
value = (0.5, 1.4, 2.7)
"""
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 floatList = [float(x) for x in strList]
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = floatList
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 if self.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])
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = date
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 if self.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])
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = time
return self.__formated_value
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224
Miguel Valdez
Some comments added to controller.py
r535 if self.format == 'pairslist':
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226 """
Example:
value = (0,1),(1,2)
"""
value = value.replace('(', '')
value = value.replace(')', '')
strList = value.split(',')
intList = [int(item) for item in strList]
pairList = []
for i in range(len(intList)/2):
pairList.append((intList[i*2], intList[i*2 + 1]))
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = pairList
return self.__formated_value
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226
Miguel Valdez
Some comments added to controller.py
r535 if self.format == 'multilist':
Julio Valdez
First Draft HDF5 IO module
r514 """
Example:
value = (0,1,2),(3,4,5)
"""
multiList = ast.literal_eval(value)
Miguel Valdez
controller.py: Some comments added
r529
self.__formated_value = multiList
return self.__formated_value
Julio Valdez
First Draft HDF5 IO module
r514
Miguel Valdez
controller.py: Some comments added
r529 format_func = eval(self.format)
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224
Miguel Valdez
controller.py: Some comments added
r529 self.__formated_value = format_func(value)
Miguel Valdez
Optimizacion del calculo del valor del parametro
r243
Miguel Valdez
controller.py: Some comments added
r529 return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 def setup(self, id, name, value, format='str'):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.id = id
self.name = name
self.value = str(value)
Miguel Valdez
Some comments added to controller.py
r535 self.format = str.lower(format)
Miguel Valdez
r577
def update(self, name, value, format='str'):
self.name = name
self.value = str(value)
self.format = format
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def makeXml(self, opElement):
parmElement = SubElement(opElement, self.ELEMENTNAME)
parmElement.set('id', str(self.id))
parmElement.set('name', self.name)
parmElement.set('value', self.value)
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 parmElement.set('format', self.format)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def readXml(self, parmElement):
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'))
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 #Compatible with old signal chain version
if self.format == 'int' and self.name == 'idfigure':
self.name = 'id'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 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
class OperationConf():
id = None
name = None
priority = None
type = None
parmConfObjList = []
ELEMENTNAME = 'Operation'
def __init__(self):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.id = 0
self.name = None
self.priority = None
self.type = 'self'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def __getNewId(self):
return int(self.id)*10 + len(self.parmConfObjList) + 1
def getElementName(self):
return self.ELEMENTNAME
def getParameterObjList(self):
return self.parmConfObjList
Miguel Valdez
r577 def getParameterObj(self, parameterName):
for parmConfObj in self.parmConfObjList:
if parmConfObj.name != parameterName:
continue
return parmConfObj
return None
def getParameterObjfromValue(self,parameterValue):
for parmConfObj in self.parmConfObjList:
if parmConfObj.getValue() != parameterValue:
continue
return parmConfObj.getValue()
return None
def getParameterValue(self, parameterName):
parameterObj = self.getParameterObj(parameterName)
value = parameterObj.getValue()
return value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def setup(self, id, name, priority, type):
self.id = id
self.name = name
self.type = type
self.priority = priority
self.parmConfObjList = []
Miguel Valdez
r577
def removeParameters(self):
for obj in self.parmConfObjList:
del obj
self.parmConfObjList = []
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 def addParameter(self, name, value, format='str'):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
id = self.__getNewId()
parmConfObj = ParameterConf()
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 parmConfObj.setup(id, name, value, format)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.parmConfObjList.append(parmConfObj)
return parmConfObj
Miguel Valdez
r577 def changeParameter(self, name, value, format='str'):
parmConfObj = self.getParameterObj(name)
parmConfObj.update(name, value, format)
return parmConfObj
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def makeXml(self, upElement):
opElement = SubElement(upElement, self.ELEMENTNAME)
opElement.set('id', str(self.id))
opElement.set('name', self.name)
opElement.set('type', self.type)
opElement.set('priority', str(self.priority))
for parmConfObj in self.parmConfObjList:
parmConfObj.makeXml(opElement)
def readXml(self, opElement):
self.id = opElement.get('id')
self.name = opElement.get('name')
self.type = opElement.get('type')
self.priority = opElement.get('priority')
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 #Compatible with old signal chain version
#Use of 'run' method instead 'init'
if self.type == 'self' and self.name == 'init':
self.name = 'run'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.parmConfObjList = []
parmElementList = opElement.getiterator(ParameterConf().getElementName())
for parmElement in parmElementList:
parmConfObj = ParameterConf()
parmConfObj.readXml(parmElement)
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
#Compatible with old signal chain version
#If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
if self.type != 'self' and self.name == 'Plot':
if parmConfObj.format == 'str' and parmConfObj.name == 'type':
self.name = parmConfObj.value
continue
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 self.parmConfObjList.append(parmConfObj)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def printattr(self):
print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
self.id,
self.name,
self.type,
self.priority)
for parmConfObj in self.parmConfObjList:
parmConfObj.printattr()
def createObject(self):
if self.type == 'self':
raise ValueError, "This operation type cannot be created"
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':
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 className = eval(self.name)
opObj = className()
return opObj
class ProcUnitConf():
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
opConfObjList = []
procUnitObj = None
opObjList = []
ELEMENTNAME = 'ProcUnit'
def __init__(self):
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
self.opConfObjList = []
self.procUnitObj = None
self.opObjDict = {}
def __getPriority(self):
return len(self.opConfObjList)+1
def __getNewId(self):
return int(self.id)*10 + len(self.opConfObjList) + 1
def getElementName(self):
return self.ELEMENTNAME
def getId(self):
return str(self.id)
def getInputId(self):
return str(self.inputId)
def getOperationObjList(self):
return self.opConfObjList
Miguel Valdez
r577 def getOperationObj(self, name=None):
for opConfObj in self.opConfObjList:
if opConfObj.name != name:
continue
return opConfObj
return None
def getOpObjfromParamValue(self,value=None):
for opConfObj in self.opConfObjList:
if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
continue
return opConfObj
return None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getProcUnitObj(self):
return self.procUnitObj
Miguel Valdez
r577 def setup(self, id, name, datatype, inputId, parentId=None):
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.inputId = inputId
Miguel Valdez
r577 self.parentId = parentId
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.opConfObjList = []
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')
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219
Miguel Valdez
r577 def removeOperations(self):
for obj in self.opConfObjList:
del obj
self.opConfObjList = []
self.addOperation(name='run')
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 def addParameter(self, **kwargs):
opObj = self.opConfObjList[0]
opObj.addParameter(**kwargs)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 return opObj
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def addOperation(self, name, optype='self'):
id = self.__getNewId()
priority = self.__getPriority()
opConfObj = OperationConf()
opConfObj.setup(id, name=name, priority=priority, type=optype)
self.opConfObjList.append(opConfObj)
return opConfObj
def makeXml(self, procUnitElement):
upElement = SubElement(procUnitElement, self.ELEMENTNAME)
upElement.set('id', str(self.id))
upElement.set('name', self.name)
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 upElement.set('datatype', self.datatype)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 upElement.set('inputId', str(self.inputId))
for opConfObj in self.opConfObjList:
opConfObj.makeXml(upElement)
def readXml(self, upElement):
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')
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
opElementList = upElement.getiterator(OperationConf().getElementName())
for opElement in opElementList:
opConfObj = OperationConf()
opConfObj.readXml(opElement)
self.opConfObjList.append(opConfObj)
def printattr(self):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.id,
self.name,
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 self.datatype,
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.inputId)
for opConfObj in self.opConfObjList:
opConfObj.printattr()
def createObjects(self):
className = eval(self.name)
procUnitObj = className()
for opConfObj in self.opConfObjList:
if opConfObj.type == 'self':
continue
opObj = opConfObj.createObject()
self.opObjDict[opConfObj.id] = opObj
procUnitObj.addOperation(opObj, opConfObj.id)
self.procUnitObj = procUnitObj
return procUnitObj
def run(self):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 finalSts = False
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 for opConfObj in self.opConfObjList:
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 kwargs[parmConfObj.name] = parmConfObj.getValue()
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
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 sts = self.procUnitObj.call(opType = opConfObj.type,
opName = opConfObj.name,
opId = opConfObj.id,
**kwargs)
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 finalSts = finalSts or sts
return finalSts
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
def close(self):
Miguel Valdez
r577 for opConfObj in self.opConfObjList:
if opConfObj.type == 'self':
continue
opObj = self.procUnitObj.getOperationObj(opConfObj.id)
opObj.close()
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
Miguel Valdez
r577 self.procUnitObj.close()
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 return
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 class ReadUnitConf(ProcUnitConf):
path = None
startDate = None
endDate = None
startTime = None
endTime = None
ELEMENTNAME = 'ReadUnit'
def __init__(self):
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 = 0
self.opConfObjList = []
self.opObjList = []
def getElementName(self):
return self.ELEMENTNAME
Miguel Valdez
r577 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
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
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.path = path
self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 self.addRunOperation(**kwargs)
Miguel Valdez
r577
def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, **kwargs):
self.datatype = datatype
self.path = path
self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
self.updateRunOperation(**kwargs)
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 def addRunOperation(self, **kwargs):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
opObj = self.addOperation(name = 'run', optype = 'self')
Miguel Valdez
r577 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 opObj.addParameter(name='path' , value=self.path, format='str')
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')
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224
for key, value in kwargs.items():
opObj.addParameter(name=key, value=value, format=type(value).__name__)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 return opObj
Miguel Valdez
r577 def updateRunOperation(self, **kwargs):
opObj = self.getOperationObj(name = 'run')
opObj.removeParameters()
opObj.addParameter(name='datatype' , value=self.datatype, format='str')
opObj.addParameter(name='path' , value=self.path, format='str')
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')
for key, value in kwargs.items():
opObj.addParameter(name=key, value=value, format=type(value).__name__)
return opObj
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 class Project():
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
id = None
name = None
description = None
# readUnitConfObjList = None
procUnitConfObjDict = None
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 ELEMENTNAME = 'Project'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
r577 def __init__(self, control=None, dataq=None):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.id = None
self.name = None
self.description = None
Miguel Valdez
r577
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict = {}
Miguel Valdez
r577 #global data_q
#data_q = dataq
if control==None:
control = {}
control['stop'] = False
control['pause'] = False
self.control = control
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def __getNewId(self):
id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
return str(id)
def getElementName(self):
return self.ELEMENTNAME
Miguel Valdez
r577
def getId(self):
return self.id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def setup(self, id, name, description):
self.id = id
self.name = name
self.description = description
Miguel Valdez
r577
def update(self, name, description):
self.name = name
self.description = description
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 def addReadUnit(self, datatype=None, name=None, **kwargs):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 #Compatible with old signal chain version
if datatype==None and name==None:
raise ValueError, "datatype or name should be defined"
if name==None:
if 'Reader' in datatype:
name = datatype
else:
name = '%sReader' %(datatype)
if datatype==None:
datatype = name.replace('Reader','')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 id = self.__getNewId()
readUnitConfObj = ReadUnitConf()
Miguel Valdez
r577 readUnitConfObj.setup(id, name, datatype, parentId=self.id, **kwargs)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
return readUnitConfObj
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 def addProcUnit(self, inputId=0, datatype=None, name=None):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
#Compatible with old signal chain version
if datatype==None and name==None:
raise ValueError, "datatype or name should be defined"
if name==None:
if 'Proc' in datatype:
name = datatype
else:
name = '%sProc' %(datatype)
if datatype==None:
datatype = name.replace('Proc','')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
id = self.__getNewId()
procUnitConfObj = ProcUnitConf()
Miguel Valdez
r577 procUnitConfObj.setup(id, name, datatype, inputId, parentId=self.id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
return procUnitConfObj
Miguel Valdez
r577 def getReadUnitId(self):
readUnitConfObj = self.getReadUnitObj()
return readUnitConfObj.id
def getReadUnitObj(self):
for obj in self.procUnitConfObjDict.values():
if obj.getElementName() == "ReadUnit":
return obj
return None
def getProcUnitObj(self, id):
return self.procUnitConfObjDict[id]
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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)
# for readUnitConfObj in self.readUnitConfObjList:
# readUnitConfObj.makeXml(projectElement)
for procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.makeXml(projectElement)
self.projectElement = projectElement
def writeXml(self, filename):
self.makeXml()
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 #print prettify(self.projectElement)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
ElementTree(self.projectElement).write(filename, method='xml')
def readXml(self, filename):
#tree = ET.parse(filename)
self.projectElement = None
# self.readUnitConfObjList = []
self.procUnitConfObjDict = {}
self.projectElement = ElementTree().parse(filename)
self.project = self.projectElement.tag
self.id = self.projectElement.get('id')
self.name = self.projectElement.get('name')
self.description = self.projectElement.get('description')
readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
for readUnitElement in readUnitElementList:
readUnitConfObj = ReadUnitConf()
readUnitConfObj.readXml(readUnitElement)
self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
for procUnitElement in procUnitElementList:
procUnitConfObj = ProcUnitConf()
procUnitConfObj.readXml(procUnitElement)
self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
def printattr(self):
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 print "Project[%s]: name = %s, description = %s" %(self.id,
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name,
self.description)
# for readUnitConfObj in self.readUnitConfObjList:
# readUnitConfObj.printattr()
for procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.printattr()
def createObjects(self):
# for readUnitConfObj in self.readUnitConfObjList:
# readUnitConfObj.createObjects()
for procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.createObjects()
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):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def connectObjects(self):
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():
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
if int(inputId) == 0:
continue
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 #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()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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 #Get current object
thisPUObj = thisPUConfObj.getProcUnitObj()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def run(self):
# for readUnitConfObj in self.readUnitConfObjList:
# readUnitConfObj.run()
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 print
print "*"*40
print " Starting SIGNAL CHAIN PROCESSING "
print "*"*40
print
keyList = self.procUnitConfObjDict.keys()
keyList.sort()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 while(True):
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
finalSts = False
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 for procKey in keyList:
# print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
procUnitConfObj = self.procUnitConfObjDict[procKey]
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 sts = procUnitConfObj.run()
finalSts = finalSts or sts
#If every process unit finished so end process
if not(finalSts):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 print "Every process unit have finished"
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
r577 if self.control['pause']:
print "Pause..."
while True:
time.sleep(0.1)
if not self.control['pause']:
break
if self.control['stop']:
break
if self.control['stop']:
print "Stopping process"
break
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 #Closing every process
for procKey in keyList:
procUnitConfObj = self.procUnitConfObjDict[procKey]
procUnitConfObj.close()
Miguel Valdez
r577
print "Process stopped"
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
def start(self, filename):
self.writeXml(filename)
self.readXml(filename)
self.createObjects()
self.connectObjects()
self.run()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 if __name__ == '__main__':
desc = "Segundo Test"
filename = "schain.xml"
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 controllerObj = Project()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
controllerObj.setup(id = '191', name='test01', description=desc)
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
path='data/rawdata/',
startDate='2011/01/01',
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 endDate='2012/12/31',
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 startTime='00:00:00',
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 endTime='23:59:59',
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 online=1,
walk=1)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
r221 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
opObj10.addParameter(name='minHei', value='90', format='float')
Miguel Valdez
Verificacion de la existencia de datos cspc y dc al realizar la integracion incoherente.
r222 opObj10.addParameter(name='maxHei', value='180', format='float')
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219
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 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 opObj12.addParameter(name='n', value='10', format='int')
procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
Miguel Valdez
r221 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 opObj11.addParameter(name='idfigure', value='1', format='int')
Miguel Valdez
Verificacion de la existencia de datos cspc y dc al realizar la integracion incoherente.
r222 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 opObj11.addParameter(name='zmin', value='40', format='int')
Miguel Valdez
r221 opObj11.addParameter(name='zmax', value='90', format='int')
Miguel Valdez
Verificacion de la existencia de datos cspc y dc al realizar la integracion incoherente.
r222 opObj11.addParameter(name='showprofile', value='1', format='int')
Miguel Valdez
-Se agrego el perfil de potencia al grafico de espectros
r204
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 # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external')
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 # opObj11.addParameter(name='idfigure', value='2', format='int')
# opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
# opObj11.addParameter(name='zmin', value='40', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
# procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId())
#
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 # opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external')
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 # opObj12.addParameter(name='n', value='2', format='int')
# opObj12.addParameter(name='overlapping', value='1', format='int')
#
# procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId())
# procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int')
#
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 # opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external')
Miguel Valdez
Busqueda de archivos dentro del directorio indicado (sin busqueda de subdirectorios) activando el flag de lectura 'walk'
r224 # opObj11.addParameter(name='idfigure', value='2', format='int')
# opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str')
# opObj11.addParameter(name='zmin', value='40', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
Miguel Valdez
Verificacion de la existencia de datos cspc y dc al realizar la integracion incoherente.
r222 # opObj11.addParameter(name='showprofile', value='1', format='int')
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 # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external')
Miguel Valdez
Verificacion de la existencia de datos cspc y dc al realizar la integracion incoherente.
r222 # opObj11.addParameter(name='idfigure', value='10', format='int')
# opObj11.addParameter(name='wintitle', value='RTI', format='str')
## opObj11.addParameter(name='xmin', value='21', format='float')
## opObj11.addParameter(name='xmax', value='22', format='float')
# opObj11.addParameter(name='zmin', value='40', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
# opObj11.addParameter(name='showprofile', value='1', format='int')
# opObj11.addParameter(name='timerange', value=str(60), format='int')
Daniel Valdez
Adicion de la clase RTIPlot
r207
# opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
# opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
#
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 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj12.addParameter(name='n', value='2', format='int')
#
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 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj11.addParameter(name='idfigure', value='2', format='int')
# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
# opObj11.addParameter(name='zmin', value='70', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
#
# opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
# opObj10.addParameter(name='channelList', value='2,6', format='intlist')
#
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 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj12.addParameter(name='n', value='2', format='int')
#
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 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj11.addParameter(name='idfigure', value='3', format='int')
# opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
# opObj11.addParameter(name='zmin', value='70', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
Miguel Valdez
-Se agrego el perfil de potencia al grafico de espectros
r204
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199 # opObj12.addParameter(name='ncode', value='2', format='int')
# opObj12.addParameter(name='nbauds', value='8', format='int')
# opObj12.addParameter(name='code0', value='001110011', format='int')
# opObj12.addParameter(name='code1', value='001110011', format='int')
Miguel Valdez
-Se agrego el perfil de potencia al grafico de espectros
r204
Daniel Valdez
Adicion de la clase RTIPlot
r207 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
#
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 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj21.addParameter(name='n', value='2', format='int')
#
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 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external')
Daniel Valdez
Adicion de la clase RTIPlot
r207 # opObj11.addParameter(name='idfigure', value='4', format='int')
# opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
# opObj11.addParameter(name='zmin', value='70', format='int')
# opObj11.addParameter(name='zmax', value='90', format='int')
Miguel Valdez
-Se agrego el perfil de potencia al grafico de espectros
r204
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 print "Escribiendo el archivo XML"
controllerObj.writeXml(filename)
print "Leyendo el archivo XML"
controllerObj.readXml(filename)
#controllerObj.printattr()
controllerObj.createObjects()
controllerObj.connectObjects()
controllerObj.run()