##// END OF EJS Templates
add ext to README
add ext to README

File last commit:

r874:ef8784f1f291
r888:9c226d817d4a
Show More
controller.py
1293 lines | 39.7 KiB | text/x-python | PythonLexer
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 '''
Created on September , 2012
@author:
'''
Miguel Valdez
Signal Chain GUI updated:...
r587
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
Miguel Valdez
r681 import schainpy
import schainpy.admin
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
from schainpy.model import *
from time import sleep
Julio Valdez
First Draft HDF5 IO module
r514
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def prettify(elem):
"""Return a pretty-printed XML string for the Element.
"""
Miguel Valdez
Version 2.1.3: ...
r664 rough_string = tostring(elem, 'utf-8')
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
Signal Chain GUI...
r600
value = self.value
format = self.format
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
Signal Chain GUI updated:...
r587
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
if value == '':
raise ValueError, "%s: This parameter value is empty" %self.name
Miguel Valdez
Some comments added to controller.py
r535
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(',')
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
Signal Chain GUI...
r600 if format == 'intlist':
Miguel Valdez
Some comments added to controller.py
r535 """
Example:
value = (0,1,2)
"""
Miguel Valdez
Signal Chain GUI...
r600
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
Miguel Valdez
Signal Chain GUI...
r600
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)]
Miguel Valdez
controller.py: Some comments added
r529
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 self.__formated_value = new_value
Miguel Valdez
controller.py: Some comments added
r529
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Signal Chain GUI...
r600 if format == 'floatlist':
Miguel Valdez
Some comments added to controller.py
r535 """
Example:
value = (0.5, 1.4, 2.7)
"""
Miguel Valdez
Signal Chain GUI updated:...
r586
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
Miguel Valdez
Signal Chain GUI...
r600
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)]
Miguel Valdez
controller.py: Some comments added
r529
Miguel Valdez
Bug fixed in controller.py when floatList is used
r741 self.__formated_value = new_value
Miguel Valdez
controller.py: Some comments added
r529
return self.__formated_value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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])
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
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])
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
Signal Chain GUI...
r600 if format == 'pairslist':
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226 """
Example:
value = (0,1),(1,2)
"""
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 new_value = ast.literal_eval(value)
Miguel Valdez
Signal Chain GUI...
r600
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 if type(new_value) not in (tuple, list):
raise ValueError, "%s has to be a tuple or list of pairs" %value
Miguel Valdez
Signal Chain GUI...
r600
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:
raise ValueError, "%s has to be a tuple or list of pairs" %value
new_value = [new_value]
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 for thisPair in new_value:
if len(thisPair) != 2:
raise ValueError, "%s has to be a tuple or list of pairs" %value
self.__formated_value = new_value
Miguel Valdez
controller.py: Some comments added
r529
return self.__formated_value
Daniel Valdez
La clase ParameterConf() evalua el valor de entrada como pairslist
r226
Miguel Valdez
Signal Chain GUI...
r600 if 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
Miguel Valdez
Signal Chain GUI...
r600 if type(multiList[0]) == int:
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
Bug fixed: translating float values to integer
r677 if format == 'bool':
value = int(value)
if format == 'int':
value = float(value)
Miguel Valdez
Signal Chain GUI...
r600 format_func = eval(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
Signal Chain GUI v2.1
r596
def updateId(self, new_id):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(new_id)
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
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
self.value = str(value)
Miguel Valdez
Some comments added to controller.py
r535 self.format = str.lower(format)
Miguel Valdez
r577
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 self.getValue()
Miguel Valdez
Bugs fixed in Signal Chain GUI:...
r643
return 1
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
-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'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
def __getNewId(self):
return int(self.id)*10 + len(self.parmConfObjList) + 1
Miguel Valdez
Signal Chain GUI v2.1
r596
def updateId(self, new_id):
self.id = str(new_id)
n = 1
for parmObj in self.parmConfObjList:
idParm = str(int(new_id)*10 + n)
parmObj.updateId(idParm)
n += 1
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getParameterObjfromValue(self, parameterValue):
Miguel Valdez
r577 for parmConfObj in self.parmConfObjList:
if parmConfObj.getValue() != parameterValue:
continue
return parmConfObj.getValue()
return None
def getParameterValue(self, parameterName):
parameterObj = self.getParameterObj(parameterName)
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606
Miguel Valdez
Bug fixed in Signal Chain GUI: Updating FTP configuration from old SendByFTP operation.
r607 # if not parameterObj:
# return None
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606
Miguel Valdez
r577 value = parameterObj.getValue()
return value
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def setup(self, id, name, priority, type):
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
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
Bugs fixed in Signal Chain GUI:...
r643 if not parmConfObj.setup(id, name, value, format):
return None
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
r681 def makeXml(self, procUnitElement):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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))
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 = []
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())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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()
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def createObject(self, plotter_queue=None):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
if self.type == 'self':
raise ValueError, "This operation type cannot be created"
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 if self.type == 'plotter':
#Plotter(plotter_name)
Miguel Valdez
v2.2.0: Controller updated
r708 if not plotter_queue:
raise ValueError, "plotter_queue is not defined. Use:\nmyProject = Project()\nmyProject.setPlotterQueue(plotter_queue)"
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 opObj = Plotter(self.name, plotter_queue)
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):
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):
new_id = int(parentId)*10 + (int(self.id) % 10)
new_inputId = int(parentId)*10 + (int(self.inputId) % 10)
#If this proc unit has not inputs
if self.inputId == '0':
new_inputId = 0
n = 1
for opConfObj in self.opConfObjList:
idOp = str(int(new_id)*10 + n)
opConfObj.updateId(idOp)
n += 1
self.parentId = str(parentId)
self.id = str(new_id)
self.inputId = str(new_inputId)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def getInputId(self):
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 return self.inputId
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getOpObjfromParamValue(self, value=None):
Miguel Valdez
r577
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
Signal Chain GUI v2.1
r596
#Compatible with old signal chain version
if datatype==None and name==None:
raise ValueError, "datatype or name should be defined"
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Signal Chain GUI v2.1
r596 if name==None:
if 'Proc' in datatype:
name = datatype
else:
name = '%sProc' %(datatype)
if datatype==None:
datatype = name.replace('Proc','')
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
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):
Miguel Valdez
Signal Chain GUI updated:...
r580 '''
Add parameters to "run" operation
'''
Miguel Valdez
Se agrego selectHeisa VoltageProc
r219 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
Miguel Valdez
r681 def makeXml(self, projectElement):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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))
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
for opConfObj in self.opConfObjList:
Miguel Valdez
r681 opConfObj.makeXml(procUnitElement)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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
-USRP Reader was added to Signal Chain GUI...
r589
Miguel Valdez
Signal Chain GUI v2.1
r596 if self.ELEMENTNAME == "ReadUnit":
self.datatype = self.datatype.replace("Reader", "")
if self.ELEMENTNAME == "ProcUnit":
self.datatype = self.datatype.replace("Proc", "")
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if self.inputId == 'None':
self.inputId = '0'
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.opConfObjList = []
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())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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()
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def createObjects(self, plotter_queue=None):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
className = eval(self.name)
procUnitObj = className()
for opConfObj in self.opConfObjList:
if opConfObj.type == 'self':
continue
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 opObj = opConfObj.createObject(plotter_queue)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.opObjDict[opConfObj.id] = opObj
procUnitObj.addOperation(opObj, opConfObj.id)
self.procUnitObj = procUnitObj
return procUnitObj
def run(self):
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
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()
Juan C. Valdez
comment unused var in controller.py
r874 #ini = time.time()
Miguel Valdez
Decimating data for Spectra and RTI plot
r813
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
Decimating data for Spectra and RTI plot
r813
# total_time = time.time() - ini
#
# if total_time > 0.002:
# print "%s::%s took %f seconds" %(self.name, opConfObj.name, total_time)
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = is_ok or sts
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
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):
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
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.inputId = None
self.parentId = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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
Signal Chain GUI v2.1
r596
#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)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
Signal Chain GUI v2.1
r596 if datatype==None:
datatype = name.replace('Reader','')
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
Miguel Valdez
GUI: minor changes
r687 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
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
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
Miguel Valdez
Signal Chain GUI v2.1
r596 #Compatible with old signal chain version
if datatype==None and name==None:
raise ValueError, "datatype or name should be defined"
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if name==None:
if 'Reader' in datatype:
name = datatype
else:
name = '%sReader' %(datatype)
Miguel Valdez
r577
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if datatype==None:
datatype = name.replace('Reader','')
Miguel Valdez
r577 self.datatype = datatype
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.name = name
Miguel Valdez
r577 self.path = path
self.startDate = startDate
self.endDate = endDate
self.startTime = startTime
self.endTime = endTime
Miguel Valdez
Signal Chain GUI v2.1
r596 self.inputId = '0'
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 self.parentId = parentId
Miguel Valdez
r577 self.updateRunOperation(**kwargs)
Miguel Valdez
GUI: minor changes
r687
def removeOperations(self):
for obj in self.opConfObjList:
del obj
self.opConfObjList = []
Miguel Valdez
r577
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
r681 # def makeXml(self, projectElement):
#
# 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))
#
# for opConfObj in self.opConfObjList:
# opConfObj.makeXml(procUnitElement)
def readXml(self, upElement):
self.id = upElement.get('id')
self.name = upElement.get('name')
self.datatype = upElement.get('datatype')
self.inputId = upElement.get('inputId')
if self.ELEMENTNAME == "ReadUnit":
self.datatype = self.datatype.replace("Reader", "")
if self.inputId == 'None':
self.inputId = '0'
self.opConfObjList = []
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())
Miguel Valdez
r681
for opElement in opElementList:
opConfObj = OperationConf()
opConfObj.readXml(opElement)
self.opConfObjList.append(opConfObj)
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')
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
Miguel Valdez
r681 filename = None
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
External plotter simplified.
r716 plotterQueue = None
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
Miguel Valdez
v2.2.0: Controller updated
r708 def __init__(self, plotter_queue=None):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.id = None
self.name = None
self.description = None
Miguel Valdez
controller.py: minor changes
r702
Miguel Valdez
External plotter simplified.
r716 self.plotterQueue = plotter_queue
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict = {}
def __getNewId(self):
Miguel Valdez
r764 idList = self.procUnitConfObjDict.keys()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
r764 id = int(self.id)*10
while True:
id += 1
if str(id) in idList:
continue
break
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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
Miguel Valdez
Signal Chain GUI v2.1
r596 def updateId(self, new_id):
self.id = str(new_id)
keyList = self.procUnitConfObjDict.keys()
keyList.sort()
n = 1
newProcUnitConfObjDict = {}
for procKey in keyList:
procUnitConfObj = self.procUnitConfObjDict[procKey]
idProcUnit = str(int(self.id)*10 + n)
procUnitConfObj.updateId(idProcUnit, parentId = self.id)
newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
n += 1
self.procUnitConfObjDict = newProcUnitConfObjDict
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def setup(self, id, name, description):
Miguel Valdez
Signal Chain GUI v2.1
r596 self.id = str(id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.name = name
self.description = description
Miguel Valdez
r577
def update(self, name, description):
self.name = name
self.description = description
Miguel Valdez
GUI: minor changes
r687 def addReadUnit(self, id=None, datatype=None, name=None, **kwargs):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
Miguel Valdez
GUI: minor changes
r687 if id is None:
idReadUnit = self.__getNewId()
else:
idReadUnit = str(id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
readUnitConfObj = ReadUnitConf()
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
return readUnitConfObj
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 def addProcUnit(self, inputId='0', datatype=None, name=None):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 idProcUnit = self.__getNewId()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
procUnitConfObj = ProcUnitConf()
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
return procUnitConfObj
Miguel Valdez
Signal Chain GUI updated:...
r587 def removeProcUnit(self, id):
if id in self.procUnitConfObjDict.keys():
self.procUnitConfObjDict.pop(id)
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
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606 def getProcUnitObj(self, id=None, name=None):
if id != None:
return self.procUnitConfObjDict[id]
if name != None:
return self.getProcUnitObjByName(name)
return None
Miguel Valdez
r577
Miguel Valdez
Bug fixed in SignalChain GUI:...
r581 def getProcUnitObjByName(self, name):
for obj in self.procUnitConfObjDict.values():
if obj.name == name:
return obj
return None
Miguel Valdez
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
r606
def procUnitItems(self):
return self.procUnitConfObjDict.items()
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 procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.makeXml(projectElement)
self.projectElement = projectElement
Miguel Valdez
controller.py: minor changes
r702 def writeXml(self, filename=None):
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
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:
filename = "schain.xml"
Miguel Valdez
controller.py: minor changes
r702
if not filename:
print "filename has not been defined. Use setFilename(filename) for do it."
return 0
Miguel Valdez
GUI: minor changes
r687 abs_file = os.path.abspath(filename)
if not os.access(os.path.dirname(abs_file), os.W_OK):
print "No write permission on %s" %os.path.dirname(abs_file)
Miguel Valdez
r681 return 0
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
GUI: minor changes
r687 if os.path.isfile(abs_file) and not(os.access(abs_file, os.W_OK)):
print "File %s already exists and it could not be overwriten" %abs_file
Miguel Valdez
r681 return 0
self.makeXml()
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
GUI: minor changes
r687 ElementTree(self.projectElement).write(abs_file, method='xml')
Miguel Valdez
r681
Miguel Valdez
v2.2.0: Controller updated
r708 self.filename = abs_file
Miguel Valdez
r681 return 1
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
Miguel Valdez
controller.py: minor changes
r702 def readXml(self, filename = None):
Miguel Valdez
new script "schain".
r830
if not filename:
print "filename is not defined"
return 0
Miguel Valdez
GUI: minor changes
r687 abs_file = os.path.abspath(filename)
if not os.path.isfile(abs_file):
Miguel Valdez
new script "schain".
r830 print "%s file does not exist" %abs_file
Miguel Valdez
r681 return 0
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.projectElement = None
self.procUnitConfObjDict = {}
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 try:
self.projectElement = ElementTree().parse(abs_file)
except:
print "Error reading %s, verify file format" %filename
return 0
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
self.project = self.projectElement.tag
self.id = self.projectElement.get('id')
self.name = self.projectElement.get('name')
self.description = self.projectElement.get('description')
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 readUnitElementList = self.projectElement.iter(ReadUnitConf().getElementName())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
for readUnitElement in readUnitElementList:
readUnitConfObj = ReadUnitConf()
readUnitConfObj.readXml(readUnitElement)
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if readUnitConfObj.parentId == None:
readUnitConfObj.parentId = self.id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
Juan C. Valdez
Version 2.2.5 Fixed several bugs, add jro colormap for spectra/rti, add ParamWriter, TODO: Fix decimation currently disabled
r860 procUnitElementList = self.projectElement.iter(ProcUnitConf().getElementName())
Miguel Valdez
Controlador de Signal Chain finalizado....
r197
for procUnitElement in procUnitElementList:
procUnitConfObj = ProcUnitConf()
procUnitConfObj.readXml(procUnitElement)
Miguel Valdez
-USRP Reader was added to Signal Chain GUI...
r589 if procUnitConfObj.parentId == None:
procUnitConfObj.parentId = self.id
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
Miguel Valdez
r681
Miguel Valdez
v2.2.0: Controller updated
r708 self.filename = abs_file
Miguel Valdez
controller.py: minor changes
r702
Miguel Valdez
r681 return 1
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 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 procUnitConfObj in self.procUnitConfObjDict.values():
procUnitConfObj.printattr()
def createObjects(self):
for procUnitConfObj in self.procUnitConfObjDict.values():
Miguel Valdez
External plotter simplified.
r716 procUnitConfObj.createObjects(self.plotterQueue)
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 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
Ivan Valdez
r719 def __handleError(self, procUnitConfObj, send_email=True):
Miguel Valdez
GUI: minor changes
r687
import socket
err = traceback.format_exception(sys.exc_info()[0],
sys.exc_info()[1],
sys.exc_info()[2])
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 print "***** Error occurred in %s *****" %(procUnitConfObj.name)
print "***** %s" %err[-1]
Ivan Valdez
r719 message = "".join(err)
sys.stderr.write(message)
if not send_email:
return
Miguel Valdez
GUI: minor changes
r687 subject = "SChain v%s: Error running %s\n" %(schainpy.__version__, procUnitConfObj.name)
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())
readUnitConfObj = self.getReadUnitObj()
if readUnitConfObj:
subtitle += "\nInput parameters:\n"
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
adminObj = schainpy.admin.SchainNotify()
adminObj.sendAlert(message=message,
subject=subject,
subtitle=subtitle,
filename=self.filename)
Miguel Valdez
Version: 2.1.3.2...
r672 def isPaused(self):
return 0
def isStopped(self):
return 0
def runController(self):
"""
returns 0 when this process has been stopped, 1 otherwise
"""
if self.isPaused():
print "Process suspended"
while True:
sleep(0.1)
if not self.isPaused():
break
if self.isStopped():
break
print "Process reinitialized"
if self.isStopped():
print "Process stopped"
return 0
return 1
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
def setFilename(self, filename):
self.filename = filename
def setPlotterQueue(self, plotter_queue):
Miguel Valdez
External plotter simplified.
r716 raise NotImplementedError, "Use schainpy.controller_api.ControllerThread instead Project class"
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def getPlotterQueue(self):
Miguel Valdez
External plotter simplified.
r716 raise NotImplementedError, "Use schainpy.controller_api.ControllerThread instead Project class"
def useExternalPlotter(self):
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
Miguel Valdez
External plotter simplified.
r716 raise NotImplementedError, "Use schainpy.controller_api.ControllerThread instead Project class"
Miguel Valdez
v2.2.0: Controller updated
r708
Miguel Valdez
Controlador de Signal Chain finalizado....
r197 def run(self):
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 print
Miguel Valdez
Version: 2.1.3.2...
r672 print "*"*60
Miguel Valdez
r681 print " Starting SIGNAL CHAIN PROCESSING v%s " %schainpy.__version__
Miguel Valdez
Version: 2.1.3.2...
r672 print "*"*60
Miguel Valdez
Merge with branch schain_julia_drifts from rev. 803 to 995....
r568 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
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
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
Version: 2.1.3.2...
r672
try:
sts = procUnitConfObj.run()
is_ok = is_ok or sts
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:
sleep(0.5)
Miguel Valdez
Bug fixed in controller.py when floatList is used
r741 self.__handleError(procUnitConfObj, send_email=True)
Miguel Valdez
GUI: minor changes
r687 is_ok = False
break
Miguel Valdez
Version: 2.1.3.2...
r672 except:
Miguel Valdez
r681 sleep(0.5)
Miguel Valdez
GUI: minor changes
r687 self.__handleError(procUnitConfObj)
Miguel Valdez
Version: 2.1.3.2...
r672 is_ok = False
break
Miguel Valdez
Primera version del controlador probada y testeada incluyendo graficos
r199
#If every process unit finished so end process
Miguel Valdez
Version: 2.1.3.2...
r672 if not(is_ok):
Miguel Valdez
-Email alert is not sent when a Keyboard error occurred ...
r735 # 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
Version: 2.1.3.2...
r672 if not self.runController():
Miguel Valdez
r577 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
Miguel Valdez
Signal Chain GUI updated:...
r587 print "Process finished"
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691 def start(self):
Miguel Valdez
GUI: minor changes
r687
Miguel Valdez
v2.2.0: Controller updated
r708 self.writeXml()
Miguel Valdez
A new Plotter Class was added for plotting using queues
r691
Miguel Valdez
A new SendToServer Unit has been created to upload files to a remote server....
r573 self.createObjects()
self.connectObjects()
self.run()
Miguel Valdez
Signal Chain GUI v2.1
r596
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
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
ControllerThread was eliminated from controller.py and it was added to controller_api.py
r636
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()