From 08c9013fd11585351f7547b54fb228c0ac99500e Mon Sep 17 00:00:00 2001 From: Rowan Cockett Date: Fri, 5 Jun 2015 10:29:11 -0700 Subject: [PATCH] updates to inversion directives --- SimPEG/Directives.py | 51 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/SimPEG/Directives.py b/SimPEG/Directives.py index e84a7d39..eb9830b5 100644 --- a/SimPEG/Directives.py +++ b/SimPEG/Directives.py @@ -146,21 +146,52 @@ class BetaSchedule(InversionDirective): -class SaveModelEveryIteration(InversionDirective): - """SaveModelEveryIteration""" +class _SaveEveryIteration(InversionDirective): + @property + def name(self): + if getattr(self, '_name', None) is None: + self._name = 'InversionModel' + return self._name + @name.setter + def name(self, value): + self._name = value @property - def modelName(self): - if getattr(self, '_modelName', None) is None: + def fileName(self): + if getattr(self, '_fileName', None) is None: from datetime import datetime - self._modelName = 'inversionModel-%s'%datetime.now().strftime('%Y-%m-%d') - return self._modelName - @modelName.setter - def modelName(self, value): - self._modelName = value + self._fileName = '%s-%s'%(self.name, datetime.now().strftime('%Y-%m-%d-%H-%M')) + return self._fileName + @fileName.setter + def fileName(self, value): + self._fileName = value + + +class SaveModelEveryIteration(_SaveEveryIteration): + """SaveModelEveryIteration""" + + def initialize(self): + print "SimPEG.SaveModelEveryIteration will save your models as: '###-%s.npy'"%self.fileName def endIter(self): - np.save('%03d-%s' % (self.opt.iter, self.modelName), self.opt.xc) + np.save('%03d-%s' % (self.opt.iter, self.fileName), self.opt.xc) + + +class SaveOutputEveryIteration(_SaveEveryIteration): + """SaveModelEveryIteration""" + + def initialize(self): + print "SimPEG.SaveOutputEveryIteration will save your inversion progress as: '###-%s.txt'"%self.fileName + f = open(self.fileName+'.txt', 'w') + f.write(" # beta phi_d phi_m f\n") + f.close() + + def endIter(self): + f = open(self.fileName+'.txt', 'a') + f.write(' %3d %1.4e %1.4e %1.4e %1.4e\n'%(self.opt.iter, self.invProb.beta, self.invProb.phi_d, self.invProb.phi_m, self.opt.f)) + f.close() + + # class UpdateReferenceModel(Parameter):