def _plotbestfits(self): primary = brewer2mpl.get_map('Set1', 'Qualitative', self.numoverlay).hex_colors secondary = brewer2mpl.get_map('Pastel1', 'Qualitative', self.numoverlay).hex_colors for lc in self.lcs: print 'Plotting %d-best overlaid light curves for lc %s'%(self.numoverlay, lc.id) lc.removesmooth() lcplot = lc.plot(fig=100, colory=r'#000000') with open(os.path.join(lc.path, lc.id, 'kali.res.dat'), 'r') as f: f.readline() linecounter = 0 for line in f: if linecounter == self.numoverlay: break words = line.rstrip('\n').split(' ') infile = os.path.join(lc.path, lc.id, '%s.pkl'%(words[1].split(';')[0])) if os.path.isfile(infile): model = pickle.load(open(infile, 'rb')) print 'Plotting overlaid light curve for model %s'%(model.id) model.set(lc.dt, model.bestTheta) model.smooth(lc, stopT=(lc.t[-1] + lc.T*0.5)) lc.plot(fig=100, colory=r'#000000', colors=[primary[linecounter], secondary[linecounter]], labely='none', labels=r'%s fit'%(model.id), clearFig=False) linecounter += 1 if self.plot: if not os.path.isfile(os.path.join(lc.path, lc.id, 'kali.comp.%s'%(self.ext))): lcplot.savefig(os.path.join(lc.path, lc.id, 'kali.comp.%s'%(self.ext)), dpi=self.dpi) if self.pdf: if not os.path.isfile(os.path.join(lc.path, lc.id, 'kali.comp.pdf')): lcplot.savefig(os.path.join(lc.path, lc.id, 'kali.comp.pdf'), dpi=self.dpi) plt.close(lcplot)
def _init_lcs(self, lcs): self._lcs = list() self.lclist = list() for lc in lcs: if not isinstance(lc, kali.lc.lc): raise ValueError('No light curve supplied!') else: self._lcs.append(lc) self._lclist.append(lc.id) if not os.path.isdir(os.path.join(lc.path, lc.id)): os.mkdir(os.path.join(lc.path, lc.id)) with open(os.path.join(lc.path, lc.id, 'kali.res.dat'), 'wb') as f: f.write('Light curve: %s; Band: %s; Redshift: %s\n'%(lc.name, lc.band, lc.z)) if self.save: with open(os.path.join(lc.path, lc.id, 'kali.lc.pkl'), 'wb') as out: pickle.dump(lc, out) if self.plot: lcplot = lc.plot(colory=r'#000000') lcplot.savefig(os.path.join(lc.path, lc.id, 'kali.lc.%s'%(self.ext)), dpi=self.dpi) if self.pdf: lcplot.savefig(os.path.join(lc.path, lc.id, 'kali.lc.pdf'), dpi=self.dpi) plt.close(lcplot) periodplot = lc.plotperiodogram(colory=r'#000000') periodplot.savefig(os.path.join(lc.path, lc.id, 'kali.periodogram.%s'%(self.ext)), dpi=self.dpi) if self.pdf: periodplot.savefig(os.path.join(lc.path, lc.name, 'kali.periodogram.pdf'), dpi=self.dpi) plt.close(periodplot)
def run(self): for modelexec in self.models: exec('model = %s' % (modelexec)) for lc in self.lcs: if self.rerun: model = self._fit(lc, model) else: outfile = os.path.join(lc.path, lc.id, '%s.pkl' % (model.id)) if os.path.isfile(outfile): model = self._restore(lc, model) else: model = self._fit(lc, model) with open(os.path.join(lc.path, lc.id, 'kali.res.dat'), 'ab') as f: f.write('Model: %s; DIC: %+17.16e\n' % (model.id, model.dic)) model.set(lc.dt, model.bestTheta) model.smooth(lc) if self.save: if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_kali.lc.pkl' % (model.id))): with open( os.path.join(lc.path, lc.id, '%s_kali.lc.pkl' % (model.id)), 'wb') as out: pickle.dump(lc, out) if self.plot: lcplot = lc.plot(colory=r'#000000') if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_kali.lc.%s' % (model.id, self.ext))): lcplot.savefig(os.path.join( lc.path, lc.id, '%s_kali.lc.%s' % (model.id, self.ext)), dpi=self.dpi) if self.pdf: if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_kali.lc.pdf' % (model.id))): lcplot.savefig(os.path.join( lc.path, lc.id, '%s_kali.lc.pdf' % (model.id)), dpi=self.dpi) plt.close(lcplot) res = model.plottriangle() if len(res) == 1: if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_sto.%s' % (model.id, self.ext))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_sto.%s' % (model.id, self.ext)), dpi=self.dpi) if self.pdf: if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_sto.pdf' % (model.id))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_sto.pdf' % (model.id)), dpi=self.dpi) plt.close(res[0][0]) elif len(res) == 2: if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_orb.%s' % (model.id, self.ext))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_orb.%s' % (model.id, self.ext)), dpi=self.dpi) if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_aux.%s' % (model.id, self.ext))): res[1][0].savefig(os.path.join( lc.path, lc.id, '%s_aux.%s' % (model.id, self.ext)), dpi=self.dpi) if self.pdf: if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_orb.pdf' % (model.id))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_orb.pdf' % (model.id)), dpi=self.dpi) if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_aux.pdf' % (model.id))): res[1][0].savefig(os.path.join( lc.path, lc.id, '%s_aux.pdf' % (model.id)), dpi=self.dpi) plt.close(res[0][0]) plt.close(res[1][0]) elif len(res) == 3: if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_sto.%s' % (model.id, self.ext))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_sto.%s' % (model.id, self.ext)), dpi=self.dpi) if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_orb.%s' % (model.id, self.ext))): res[1][0].savefig(os.path.join( lc.path, lc.id, '%s_orb.%s' % (model.id, self.ext)), dpi=self.dpi) if not os.path.isfile( os.path.join( lc.path, lc.id, '%s_aux.%s' % (model.id, self.ext))): res[2][0].savefig(os.path.join( lc.path, lc.id, '%s_aux.%s' % (model.id, self.ext)), dpi=self.dpi) if self.pdf: if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_sto.pdf' % (model.id))): res[0][0].savefig(os.path.join( lc.path, lc.id, '%s_sto.pdf' % (model.id)), dpi=self.dpi) if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_orb.pdf' % (model.id))): res[1][0].savefig(os.path.join( lc.path, lc.id, '%s_orb.pdf' % (model.id)), dpi=self.dpi) if not os.path.isfile( os.path.join(lc.path, lc.id, '%s_aux.pdf' % (model.id))): res[2][0].savefig(os.path.join( lc.path, lc.id, '%s_aux.pdf' % (model.id)), dpi=self.dpi) plt.close(res[0][0]) plt.close(res[1][0]) plt.close(res[2][0]) del model self._reorder() self._plotbestfits()