def __init__(self, taskControl, model): """ Constructor taskControl: dictionary conforming to opfTaskControlSchema.json that defines the actions to be performed on the given model. model: instance of Model that this OPFTaskDriver instance will drive. """ #validateOpfJsonValue(taskControl, "opfTaskControlSchema.json") self.__reprstr = ("%s(" + \ "taskControl=%r, " + \ "model=%r)") % \ (self.__class__.__name__, taskControl, model) # Init logging # self.logger = logging.getLogger(".".join( ['com.numenta', self.__class__.__module__, self.__class__.__name__])) self.logger.info(("Instantiating %s; %r.") % \ (self.__class__.__name__, self.__reprstr)) # ----------------------------------------------------------------------- # Save args of interest # self.__taskControl = taskControl self.__model = model # ----------------------------------------------------------------------- # Create Metrics Manager. # self.__metricsMgr = None metrics = taskControl.get('metrics', None) self.__metricsMgr = MetricsManager(metricSpecs=metrics, inferenceType=model.getInferenceType(), fieldInfo=model.getFieldInfo()) # ----------------------------------------------------------------------- # Figure out which metrics should be logged # # The logged metrics won't within the current task self.__loggedMetricLabels = set([]) loggedMetricPatterns = taskControl.get('loggedMetrics', None) # ----------------------------------------------------------------------- # Create our phase manager # self.__phaseManager = _PhaseManager( model=model, phaseSpecs=taskControl.get('iterationCycle', [])) # ----------------------------------------------------------------------- # Initialize the callbacks container # self.__userCallbacks = defaultdict(list, taskControl.get('callbacks', {})) return
def __init__(self, taskControl, model): """ Constructor taskControl: dictionary conforming to opfTaskControlSchema.json that defines the actions to be performed on the given model. model: instance of Model that this OPFTaskDriver instance will drive. """ #validateOpfJsonValue(taskControl, "opfTaskControlSchema.json") self.__reprstr = ("%s(" + \ "taskControl=%r, " + \ "model=%r)") % \ (self.__class__.__name__, taskControl, model) # Init logging # self.logger = logging.getLogger(".".join( ['com.numenta', self.__class__.__module__, self.__class__.__name__])) self.logger.debug(("Instantiating %s; %r.") % \ (self.__class__.__name__, self.__reprstr)) # ----------------------------------------------------------------------- # Save args of interest # self.__taskControl = taskControl self.__model = model # ----------------------------------------------------------------------- # Create Metrics Manager. # self.__metricsMgr = None metrics = taskControl.get('metrics', None) self.__metricsMgr = MetricsManager(metricSpecs=metrics, inferenceType=model.getInferenceType(), fieldInfo=model.getFieldInfo()) # ----------------------------------------------------------------------- # Figure out which metrics should be logged # # The logged metrics won't within the current task self.__loggedMetricLabels = set([]) loggedMetricPatterns = taskControl.get('loggedMetrics', None) # ----------------------------------------------------------------------- # Create our phase manager # self.__phaseManager = _PhaseManager( model=model, phaseSpecs=taskControl.get('iterationCycle', [])) # ----------------------------------------------------------------------- # Initialize the callbacks container # self.__userCallbacks = defaultdict(list, taskControl.get('callbacks', {})) return
class OPFTaskDriver(object): """ Task Phase Driver implementation Conceptually, the client injects input records, one at a time, into an OPFTaskDriver instance for execution according to the current IterationPhase as maintained by the OPFTaskDriver instance. """ def __init__(self, taskControl, model): """ Constructor taskControl: dictionary conforming to opfTaskControlSchema.json that defines the actions to be performed on the given model. model: instance of Model that this OPFTaskDriver instance will drive. """ #validateOpfJsonValue(taskControl, "opfTaskControlSchema.json") self.__reprstr = ("%s(" + \ "taskControl=%r, " + \ "model=%r)") % \ (self.__class__.__name__, taskControl, model) # Init logging # self.logger = logging.getLogger(".".join( ['com.numenta', self.__class__.__module__, self.__class__.__name__])) self.logger.info(("Instantiating %s; %r.") % \ (self.__class__.__name__, self.__reprstr)) # ----------------------------------------------------------------------- # Save args of interest # self.__taskControl = taskControl self.__model = model # ----------------------------------------------------------------------- # Create Metrics Manager. # self.__metricsMgr = None metrics = taskControl.get('metrics', None) self.__metricsMgr = MetricsManager(metricSpecs=metrics, inferenceType=model.getInferenceType(), fieldInfo=model.getFieldInfo()) # ----------------------------------------------------------------------- # Figure out which metrics should be logged # # The logged metrics won't within the current task self.__loggedMetricLabels = set([]) loggedMetricPatterns = taskControl.get('loggedMetrics', None) # ----------------------------------------------------------------------- # Create our phase manager # self.__phaseManager = _PhaseManager( model=model, phaseSpecs=taskControl.get('iterationCycle', [])) # ----------------------------------------------------------------------- # Initialize the callbacks container # self.__userCallbacks = defaultdict(list, taskControl.get('callbacks', {})) return def __repr__(self): return self.__reprstr def replaceIterationCycle(self, phaseSpecs): """ Replaces the Iteration Cycle phases phaseSpecs: Iteration cycle description consisting of a sequence of IterationPhaseSpecXXXXX elements that are performed in the given order """ # ----------------------------------------------------------------------- # Replace our phase manager # self.__phaseManager = _PhaseManager( model=self.__model, phaseSpecs=phaseSpecs) return def setup(self): """ Performs initial setup activities, including 'setup' callbacks. This method MUST be called once before the first call to handleInputRecord() Returns: nothing """ # Execute task-setup callbacks for cb in self.__userCallbacks['setup']: cb(self.__model) return def finalize(self): """ Perform final activities, including 'finish' callbacks. This method MUST be called once after the last call to handleInputRecord() Returns: nothing """ # Execute task-finish callbacks for cb in self.__userCallbacks['finish']: cb(self.__model) return def handleInputRecord(self, inputRecord): """ Processes the given record according to the current iteration cycle phase inputRecord: record object formatted according to nupic.data.FileSource.getNext() result format. Returns: An opfutils.ModelResult object """ assert inputRecord, "Invalid inputRecord: %r" % inputRecord results = self.__phaseManager.handleInputRecord(inputRecord) metrics = self.__metricsMgr.update(results) # Execute task-postIter callbacks for cb in self.__userCallbacks['postIter']: cb(self.__model) results.metrics = metrics # Return the input and predictions for this record return results def getMetrics(self): """ Gets the current metric values Returns: A dictionary of metric values. The key for each entry is the label for the metric spec, as generated by MetricSpec.getLabel(). The value for each entry is a dictonary containing the value of the metric as returned by the metric module's getMetric() function (see metrics.py) """ return self.__metricsMgr.getMetrics() def getMetricLabels(self): """ Return the list of labels for the metrics that are being calculated""" return self.__metricsMgr.getMetricLabels()
class OPFTaskDriver(object): """ Task Phase Driver implementation Conceptually, the client injects input records, one at a time, into an OPFTaskDriver instance for execution according to the current IterationPhase as maintained by the OPFTaskDriver instance. """ def __init__(self, taskControl, model): """ Constructor taskControl: dictionary conforming to opfTaskControlSchema.json that defines the actions to be performed on the given model. model: instance of Model that this OPFTaskDriver instance will drive. """ #validateOpfJsonValue(taskControl, "opfTaskControlSchema.json") self.__reprstr = ("%s(" + \ "taskControl=%r, " + \ "model=%r)") % \ (self.__class__.__name__, taskControl, model) # Init logging # self.logger = logging.getLogger(".".join( ['com.numenta', self.__class__.__module__, self.__class__.__name__])) self.logger.debug(("Instantiating %s; %r.") % \ (self.__class__.__name__, self.__reprstr)) # ----------------------------------------------------------------------- # Save args of interest # self.__taskControl = taskControl self.__model = model # ----------------------------------------------------------------------- # Create Metrics Manager. # self.__metricsMgr = None metrics = taskControl.get('metrics', None) self.__metricsMgr = MetricsManager(metricSpecs=metrics, inferenceType=model.getInferenceType(), fieldInfo=model.getFieldInfo()) # ----------------------------------------------------------------------- # Figure out which metrics should be logged # # The logged metrics won't within the current task self.__loggedMetricLabels = set([]) loggedMetricPatterns = taskControl.get('loggedMetrics', None) # ----------------------------------------------------------------------- # Create our phase manager # self.__phaseManager = _PhaseManager( model=model, phaseSpecs=taskControl.get('iterationCycle', [])) # ----------------------------------------------------------------------- # Initialize the callbacks container # self.__userCallbacks = defaultdict(list, taskControl.get('callbacks', {})) return def __repr__(self): return self.__reprstr def replaceIterationCycle(self, phaseSpecs): """ Replaces the Iteration Cycle phases phaseSpecs: Iteration cycle description consisting of a sequence of IterationPhaseSpecXXXXX elements that are performed in the given order """ # ----------------------------------------------------------------------- # Replace our phase manager # self.__phaseManager = _PhaseManager( model=self.__model, phaseSpecs=phaseSpecs) return def setup(self): """ Performs initial setup activities, including 'setup' callbacks. This method MUST be called once before the first call to handleInputRecord() Returns: nothing """ # Execute task-setup callbacks for cb in self.__userCallbacks['setup']: cb(self.__model) return def finalize(self): """ Perform final activities, including 'finish' callbacks. This method MUST be called once after the last call to handleInputRecord() Returns: nothing """ # Execute task-finish callbacks for cb in self.__userCallbacks['finish']: cb(self.__model) return def handleInputRecord(self, inputRecord): """ Processes the given record according to the current iteration cycle phase inputRecord: record object formatted according to nupic.data.FileSource.getNext() result format. Returns: An opfutils.ModelResult object """ assert inputRecord, "Invalid inputRecord: %r" % inputRecord results = self.__phaseManager.handleInputRecord(inputRecord) metrics = self.__metricsMgr.update(results) # Execute task-postIter callbacks for cb in self.__userCallbacks['postIter']: cb(self.__model) results.metrics = metrics # Return the input and predictions for this record return results def getMetrics(self): """ Gets the current metric values Returns: A dictionary of metric values. The key for each entry is the label for the metric spec, as generated by MetricSpec.getLabel(). The value for each entry is a dictonary containing the value of the metric as returned by the metric module's getMetric() function (see metrics.py) """ return self.__metricsMgr.getMetrics() def getMetricLabels(self): """ Return the list of labels for the metrics that are being calculated""" return self.__metricsMgr.getMetricLabels()