예제 #1
0
  def save_state(self, hmodel, iterid, lap, evBound, doFinal=False):
    ''' Save state of the hmodel's global parameters and evBound
    '''  
    traceEvery = self.outputParams['traceEvery']
    if traceEvery <= 0:
      traceEvery = -1
    doTrace = isEvenlyDivisibleFloat(lap, traceEvery) or iterid < 3
    
    if traceEvery > 0 and (doFinal or doTrace) and lap not in self.TraceLaps:
      # Record current evidence
      self.evTrace.append(evBound)
      self.TraceLaps.add(lap)

      # Exit here if we're not saving to disk
      if self.savedir is None:
        return
    
      # Record current state to plain-text files
      with open( self.mkfile('laps.txt'), 'a') as f:        
        f.write('%.4f\n' % (lap))
      with open( self.mkfile('evidence.txt'), 'a') as f:        
        f.write('%.9e\n' % (evBound))
      with open( self.mkfile('nObs.txt'), 'a') as f:
        f.write('%d\n' % (self.nObsProcessed))
      with open( self.mkfile('times.txt'), 'a') as f:
        f.write('%.3f\n' % (self.get_elapsed_time()))
      if self.hasMove('birth') or self.hasMove('merge'):
        with open( self.mkfile('K.txt'), 'a') as f:
          f.write('%d\n' % (hmodel.obsModel.K))

    saveEvery = self.outputParams['saveEvery']
    if saveEvery <= 0 or self.savedir is None:
      return

    doSave = isEvenlyDivisibleFloat(lap, saveEvery) or iterid < 3
    if (doFinal or doSave) and iterid not in self.SavedIters:
      self.SavedIters.add(iterid)
      with open(self.mkfile('laps-saved-params.txt'), 'a') as f:        
        f.write('%.4f\n' % (lap))
      prefix = ModelWriter.makePrefixForLap(lap)
      ModelWriter.save_model(hmodel, self.savedir, prefix,
                              doSavePriorInfo=(iterid<1), doLinkBest=True)
예제 #2
0
 def saveParams(self, lap, hmodel, SS=None, **kwargs):
     """ Save current model to disk
     """
     if lap in self.SavedIters or self.task_output_path is None:
         return
     ElapsedTimeLogger.startEvent("io", "saveparams")
     self.SavedIters.add(lap)
     prefix = ModelWriter.makePrefixForLap(lap)
     with open(self.mkfile('snapshot_lap.txt'), 'a') as f:
         f.write(six.text_type('%.4f\n' % (lap)))
     with open(self.mkfile('snapshot_elapsed_time_sec.txt'), 'a') as f:
         f.write(six.text_type('%.3f\n' % (self.get_elapsed_time())))
     if self.outputParams['doSaveFullModel']:
         ModelWriter.save_model(
             hmodel, self.task_output_path, prefix,
             doSavePriorInfo=np.allclose(lap, 0.0),
             doLinkBest=True,
             doSaveObsModel=self.outputParams['doSaveObsModel'])
     if self.outputParams['doSaveTopicModel']:
         ModelWriter.saveTopicModel(
             hmodel, SS, self.task_output_path, prefix, **kwargs)
     ElapsedTimeLogger.stopEvent("io", "saveparams")