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)
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")