def solve_all(Data, SolvePars, PlotPars, output_file): print '------------------------------------------------------' print 'Initializing ...' start_time = datetime.datetime.now() print '- Date and time: '+start_time.strftime('%d-%b-%Y, %H:%M:%S') print '- Star data: '+Data.star_data_fname print '------------------------------------------------------' fout = open(output_file, 'wb') pars = ['age', 'mass', 'logl', 'mv', 'r'] if SolvePars.key_parameter_known == 'plx': pars.append('logg') values = ['mp', 'll1s', 'ul1s', 'll2s', 'ul2s', 'mean', 'std'] hd = 'id' for par in pars: for value in values: hd += ','+par+'_'+value fout.write(hd+'\n') for star_id in Data.star_data['id']: print '' print '*'*len(star_id) print star_id print '*'*len(star_id) s = Star(star_id) s.get_data_from(Data) solve_one(s, SolvePars, PlotPars) string = "{0}".format(s.name) for par in pars: keys = ['most_probable', 'lower_limit_1sigma', 'upper_limit_1sigma', 'lower_limit_2sigma', 'upper_limit_2sigma'] try: for key in keys: string += ",{0:.3f}".format(getattr(s, 'yy'+par)[key]) except: string += ",,,,," try: string += ",{0:.3f},{1:.3f}".\ format(getattr(s, 'yy'+par)['mean'],\ getattr(s, 'yy'+par)['std']) except: string += ",," fout.write(string+"\n") fout.close() print '' print '------------------------------------------------------' end_time = datetime.datetime.now() print '- Date and time: '+end_time.strftime('%d-%b-%Y, %H:%M:%S') delta_t = (end_time - start_time).seconds hours, remainder = divmod(delta_t, 3600) minutes, seconds = divmod(remainder, 60) print '- Time elapsed: %sH %sM %sS' % (hours, minutes, seconds) print 'Done!' print '------------------------------------------------------' print ''
def solve_all(Data, SolveParsInit, output_file, reference_star=None, PlotPars=object): print '------------------------------------------------------' print 'Initializing ...' start_time = datetime.datetime.now() print '- Date and time: '+start_time.strftime('%d-%b-%Y, %H:%M:%S') print '- Model atmospheres: '+SolveParsInit.grid print '- Star data: '+Data.star_data_fname print '- Line list: '+Data.lines_fname print '------------------------------------------------------' if reference_star: Ref = Star(reference_star) Ref.get_data_from(Data) else: Ref = None fout = open(output_file, 'wb') if SolveParsInit.errors: fout.write('id,teff,logg,feh_model,vt,feh,err_feh_,'+ 'feh1,err_feh1,nfe1,feh2,err_feh2,nfe2,' 'slope_ep,err_slope_ep,slope_rew,err_slope_rew,' 'stop_iter,converged,' 'err_teff,err_logg,err_feh,err_vt\n') else: fout.write('id,teff,logg,feh_model,vt,feh,err_feh,'+ 'feh1,err_feh1,nfe1,feh2,err_feh2,nfe2,' 'slope_ep,err_slope_ep,slope_rew,err_slope_rew,' 'stop_iter,converged,' 'err_teff,err_logg,err_feh_,err_vt\n') for star_id in Data.star_data['id']: print '' print '*'*len(star_id) print star_id print '*'*len(star_id) s = Star(star_id) try: s.get_data_from(Data) except: logger.warning('No data found for '+s.name+\ '. Excluded from output file.') print 'Data not found.' #fout.write("{0},,,,,,,,,,"\ # ",,,,,,,,,,,,\n".\ # format(s.name)) continue if ma.count(Data.lines[star_id]) == 0: print 'Line data not found.' continue sp = SolvePars() sp.__dict__ = SolveParsInit.__dict__.copy() if reference_star: if s.name == Ref.name: sp.niter = 0 print 'Reference star. No calculations needed.' #continue if hasattr(s, 'converged') and sp.check_converged: if s.converged == 'True': print 'Already converged.' continue #sp.niter = 0 #s.converged = True if s.name in sp.ignore: print 'Asked to ignore.' continue solve_one(s, sp, Ref, PlotPars=PlotPars) if sp.niter == 0: s.converged = '' fout.write("{0},{1:4d},{2:5.3f},{3},{4:4.2f},{5},{6:5.3f},"\ "{7},{8:5.3f},{9},"\ "{10},{11:5.3f},{12},{13:.6f},{14:.6f},"\ "{15:.6f},{16:.6f},{17},{18},"\ "{19:3d},{20:5.3f},{21:5.3f},{22:4.2f}\n".\ format(s.name, s.teff, s.logg, str(round(s.feh,3)), s.vt, str(round(s.iron_stats['afe'],3)), s.iron_stats['err_afe'], str(round(s.iron_stats['afe1'],3)), s.iron_stats['err_afe1'], s.iron_stats['nfe1'], str(round(s.iron_stats['afe2'],3)), s.iron_stats['err_afe2'], s.iron_stats['nfe2'], s.iron_stats['slope_ep'], s.iron_stats['err_slope_ep'], s.iron_stats['slope_rew'], s.iron_stats['err_slope_rew'], s.stop_iter, s.converged, s.sp_err['teff'], s.sp_err['logg'], s.sp_err['afe'], s.sp_err['vt'] )) fout.close() print '' print '------------------------------------------------------' end_time = datetime.datetime.now() print '- Date and time: '+end_time.strftime('%d-%b-%Y, %H:%M:%S') delta_t = (end_time - start_time).seconds hours, remainder = divmod(delta_t, 3600) minutes, seconds = divmod(remainder, 60) print '- Time elapsed: %sH %sM %sS' % (hours, minutes, seconds) print 'Done!' print '------------------------------------------------------' print ''