Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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()