def star_config(koi, bands=['g', 'r', 'i', 'z', 'J', 'H', 'K'], unc=dict(g=0.05, r=0.05, i=0.05, z=0.05, J=0.02, H=0.02, K=0.02), **kwargs): """returns star config object for given KOI """ folder = os.path.join(KOI_FPPDIR, ku.koiname(koi)) if not os.path.exists(folder): os.makedirs(folder) config = ConfigObj(os.path.join(folder, 'star.ini')) koi = ku.koiname(koi) maxAV = koi_maxAV(koi) config['maxAV'] = maxAV mags = ku.KICmags(koi) for band in bands: if not np.isnan(mags[band]): config[band] = (mags[band], unc[band]) config['Kepler'] = mags['Kepler'] kepid = KOIDATA.ix[koi, 'kepid'] try: m = re.match('SPE', kicu.DATA.ix[kepid, 'teff_prov']) except KeyError: raise MissingStellarError('{} not in stellar table?'.format(kepid)) if m: teff, e_teff = (kicu.DATA.ix[kepid, 'teff'], kicu.DATA.ix[kepid, 'teff_err1']) if not any(np.isnan([teff, e_teff])): config['Teff'] = (teff, e_teff) feh, e_feh = (kicu.DATA.ix[kepid, 'feh'], kicu.DATA.ix[kepid, 'feh_err1']) if not any(np.isnan([feh, e_feh])): config['feh'] = (feh, e_feh) try: logg, e_logg = (kicu.DATA.ix[kepid, 'logg'], kicu.DATA.ix[kepid, 'logg_err1']) if not any(np.isnan([logg, e_logg])): config['logg'] = (logg, e_logg) except: pass for kw, val in kwargs.items(): config[kw] = val return config
def star_config(koi, bands=['g','r','i','z','J','H','K'], unc=dict(g=0.05, r=0.05, i=0.05, z=0.05, J=0.02, H=0.02, K=0.02), **kwargs): """returns star config object for given KOI """ folder = os.path.join(KOI_FPPDIR, ku.koiname(koi)) if not os.path.exists(folder): os.makedirs(folder) config = ConfigObj(os.path.join(folder,'star.ini')) koi = ku.koiname(koi) maxAV = koi_maxAV(koi) config['maxAV'] = maxAV mags = ku.KICmags(koi) for band in bands: if not np.isnan(mags[band]): config[band] = (mags[band], unc[band]) config['Kepler'] = mags['Kepler'] kepid = KOIDATA.ix[koi,'kepid'] if use_property(kepid, 'teff'): teff, e_teff = (kicu.DATA.ix[kepid, 'teff'], kicu.DATA.ix[kepid, 'teff_err1']) if not any(np.isnan([teff, e_teff])): config['Teff'] = (teff, e_teff) if use_property(kepid, 'logg'): logg, e_logg = (kicu.DATA.ix[kepid, 'logg'], kicu.DATA.ix[kepid, 'logg_err1']) if not any(np.isnan([logg, e_logg])): config['logg'] = (logg, e_logg) if use_property(kepid, 'feh'): feh, e_feh = (kicu.DATA.ix[kepid, 'feh'], kicu.DATA.ix[kepid, 'feh_err1']) if not any(np.isnan([feh, e_feh])): config['feh'] = (feh, e_feh) for kw,val in kwargs.items(): config[kw] = val return config
def __init__(self, koi, recalc=False, use_JRowe=True, trsig_kws=None, tag=None, starmodel_mcmc_kws=None, **kwargs): koi = koiname(koi) #if saved popset exists, load folder = os.path.join(KOI_FPPDIR, koi) if tag is not None: folder += '_{}'.format(tag) if not os.path.exists(folder): os.makedirs(folder) if trsig_kws is None: trsig_kws = {} #first check if pickled signal is there to be loaded trsigfile = os.path.join(folder, 'trsig.pkl') if os.path.exists(trsigfile): trsig = pickle.load(open(trsigfile, 'rb')) else: if use_JRowe: trsig = JRowe_KeplerTransitSignal(koi, **trsig_kws) else: trsig = KeplerTransitSignal(koi, **trsig_kws) popsetfile = os.path.join(folder, 'popset.h5') if os.path.exists(popsetfile) and not recalc: popset = PopulationSet(popsetfile, **kwargs) else: koinum = koiname(koi, koinum=True) kepid = ku.DATA.ix[koi, 'kepid'] if 'mass' not in kwargs: kwargs['mass'] = koi_propdist(koi, 'mass') if 'radius' not in kwargs: kwargs['radius'] = koi_propdist(koi, 'radius') if 'feh' not in kwargs: kwargs['feh'] = koi_propdist(koi, 'feh') if 'age' not in kwargs: try: kwargs['age'] = koi_propdist(koi, 'age') except: kwargs['age'] = (9.7, 0.1) #default age if 'Teff' not in kwargs: kwargs['Teff'] = kicu.DATA.ix[kepid, 'teff'] if 'logg' not in kwargs: kwargs['logg'] = kicu.DATA.ix[kepid, 'logg'] if 'rprs' not in kwargs: if use_JRowe: kwargs['rprs'] = trsig.rowefit.ix['RD1', 'val'] else: kwargs['rprs'] = ku.DATA.ix[koi, 'koi_ror'] #if stellar properties are determined spectroscopically, # fit stellar model if 'starmodel' not in kwargs: if re.match('SPE', kicu.DATA.ix[kepid, 'teff_prov']): logging.info( 'Spectroscopically determined stellar properties.') #first, see if there already is a starmodel to load #fit star model Teff = kicu.DATA.ix[kepid, 'teff'] e_Teff = kicu.DATA.ix[kepid, 'teff_err1'] logg = kicu.DATA.ix[kepid, 'logg'] e_logg = kicu.DATA.ix[kepid, 'logg_err1'] feh = kicu.DATA.ix[kepid, 'feh'] e_feh = kicu.DATA.ix[kepid, 'feh_err1'] logging.info( 'fitting StarModel (Teff=({},{}), logg=({},{}), feh=({},{}))...' .format(Teff, e_Teff, logg, e_logg, feh, e_feh)) dar = Dartmouth_Isochrone() starmodel = StarModel(dar, Teff=(Teff, e_Teff), logg=(logg, e_logg), feh=(feh, e_feh)) if starmodel_mcmc_kws is None: starmodel_mcmc_kws = {} starmodel.fit_mcmc(**starmodel_mcmc_kws) logging.info('Done.') kwargs['starmodel'] = starmodel if 'mags' not in kwargs: kwargs['mags'] = ku.KICmags(koi) if 'ra' not in kwargs: kwargs['ra'], kwargs['dec'] = ku.radec(koi) if 'period' not in kwargs: kwargs['period'] = ku.DATA.ix[koi, 'koi_period'] if 'pl_kws' not in kwargs: kwargs['pl_kws'] = {} if 'fp_specific' not in kwargs['pl_kws']: rp = kwargs['radius'].mu * kwargs['rprs'] * RSUN / REARTH kwargs['pl_kws']['fp_specific'] = fp_fressin(rp) #trilegal_filename = os.path.join(folder,'starfield.h5') trilegal_filename = kepler_starfield_file(koi) popset = PopulationSet(trilegal_filename=trilegal_filename, **kwargs) #popset.save_hdf('{}/popset.h5'.format(folder), overwrite=True) lhoodcachefile = os.path.join(folder, 'lhoodcache.dat') self.koi = koi FPPCalculation.__init__(self, trsig, popset, folder=folder) self.save() self.apply_default_constraints()