class_docstr: Utility Class to help with the selection of the 'best' model
  during hypersearch for a particular job.
  
  The main interface method is updateResultsForJob(), which is to
  be called periodically from the hypersearch worker.
  
  When called, the model chooser first tries to update the
  _eng_last_selection_sweep_time field in the jobs table. If it
  is successful, it then tries to find the model with the maximum
  metric.
  
  Note : Altough that there are many model choosers for a
  given job, only 1 will update the results because only one
  chooser will be  able to update the _eng_last_selection_sweep_time
  within a given interval
docstr: TODO: Documentation 
docstr_tok: ["TODO",":","Documentation"]
code: def __init__(self, jobID, jobsDAO, logLevel=None):
      """TODO: Documentation"""
  
      self._jobID = jobID
      self._cjDB = jobsDAO
      self._lastUpdateAttemptTime = 0
      initLogging(verbose=True)
      self.logger = logging.getLogger(
          ".".join(
              [
                  "com.numenta",
                  self.__class__.__module__,
                  self.__class__.__name__,
              ]
          )
      )
      if logLevel is not None:
          self.logger.setLevel(logLevel)
  
      self.logger.info(
          "Created new ModelChooser for job %s" % str(jobID)
      )
  
file_path: nupic-legacy/src/nupic/swarming/model_chooser.py
imports: import json
  import time
  import logging
  from nupic.support import initLogging
label_desc: Use image node_id 1 to create a new ModelChooser object from inherited base classes: object with example: obj = ModelChooser(jobID, jobsDAO, logLevel)