From c4bb5e3aa489e8538974c131a56f391ad9ddb3a6 Mon Sep 17 00:00:00 2001 From: Tim Morton Date: Tue, 3 Mar 2020 13:33:53 -0800 Subject: [PATCH] add flat feh option to starfit --- isochrones/starfit.py | 9 +++++ scripts/starfit | 85 +++++++++++++++++++++++-------------------- 2 files changed, 55 insertions(+), 39 deletions(-) diff --git a/isochrones/starfit.py b/isochrones/starfit.py index 5e2753f..c46b5a4 100644 --- a/isochrones/starfit.py +++ b/isochrones/starfit.py @@ -10,6 +10,7 @@ from configobj import ConfigObj from .starmodel import StarModel, BasicStarModel from .isochrone import get_ichrone +from .priors import FlatPrior from .logger import initLogging @@ -18,6 +19,7 @@ def starfit( folder, multiplicities=["single"], models="mist", + feh_prior="local", use_emcee=False, plot_only=False, overwrite=False, @@ -30,6 +32,8 @@ def starfit( **kwargs ): """ Runs starfit routine for a given folder. + + feh_prior : 'flat' or 'local' """ nstars = {"single": 1, "binary": 2, "triple": 3} @@ -85,6 +89,11 @@ def starfit( mod = Mod.from_ini( ichrone, folder, use_emcee=use_emcee, N=N, ini_file=ini_file, name=name ) + + # Set feh prior + if feh_prior == "flat": + mod.set_prior(feh=FlatPrior((ichrone.minfeh, ichrone.maxfeh))) + try: mod.obs.print_ascii() except: diff --git a/scripts/starfit b/scripts/starfit index 17055dc..744bce5 100644 --- a/scripts/starfit +++ b/scripts/starfit @@ -11,7 +11,8 @@ be conditioned. Multiple folder names can also be passed. from __future__ import division, print_function import matplotlib -matplotlib.use('agg') + +matplotlib.use("agg") import matplotlib.pyplot as plt import tables @@ -30,30 +31,31 @@ try: except ImportError: has_tgastars = False -if __name__=='__main__': - - parser = argparse.ArgumentParser(description='Fit physical properties of a star conditioned on observed quantities.') - - parser.add_argument('folders', nargs='*', default=['.']) - parser.add_argument('--binary', action='store_true') - parser.add_argument('--triple', action='store_true') - parser.add_argument('--all', action='store_true') - parser.add_argument('--models', default='mist') - parser.add_argument('--emcee', action='store_true') - parser.add_argument('--no_local_fehprior', action='store_true') - parser.add_argument('--plot_only', action='store_true') - parser.add_argument('-o','--overwrite', action='store_true') - parser.add_argument('-v','--verbose', action='store_true') - parser.add_argument('--gaia', action='store_true') - parser.add_argument('--write_ini', action='store_true') - parser.add_argument('--rootdir', type=str, default=None) - parser.add_argument('--bands', nargs='*', default=None, - help='Additional band(s) to include in samples.') +if __name__ == "__main__": + + parser = argparse.ArgumentParser( + description="Fit physical properties of a star conditioned on observed quantities." + ) + + parser.add_argument("folders", nargs="*", default=["."]) + parser.add_argument("--binary", action="store_true") + parser.add_argument("--triple", action="store_true") + parser.add_argument("--all", action="store_true") + parser.add_argument("--models", default="mist") + parser.add_argument("--emcee", action="store_true") + parser.add_argument("--fehprior", default="local") + parser.add_argument("--plot_only", action="store_true") + parser.add_argument("-o", "--overwrite", action="store_true") + parser.add_argument("-v", "--verbose", action="store_true") + parser.add_argument("--gaia", action="store_true") + parser.add_argument("--write_ini", action="store_true") + parser.add_argument("--rootdir", type=str, default=None) + parser.add_argument("--bands", nargs="*", default=None, help="Additional band(s) to include in samples.") args = parser.parse_args() if args.gaia and not has_tgastars: - print('You must install the tgastars package to run in Gaia mode.') + print("You must install the tgastars package to run in Gaia mode.") sys.exit() try: @@ -62,30 +64,36 @@ if __name__=='__main__': args.emcee = True if args.all: - multiplicities = ['single', 'binary', 'triple'] + multiplicities = ["single", "binary", "triple"] elif args.binary: - multiplicities = ['binary'] + multiplicities = ["binary"] elif args.triple: - multiplicities = ['triple'] + multiplicities = ["triple"] else: - multiplicities = ['single'] - - nstars = {'single':1, - 'binary':2, - 'triple':3} + multiplicities = ["single"] + + nstars = {"single": 1, "binary": 2, "triple": 3} starfit_fn = tgas_starfit if args.gaia else starfit - logger = None #dummy - - for i,folder in enumerate(args.folders): - print('{} of {}: {}'.format(i+1, len(args.folders), folder)) - kwargs = dict(multiplicities=multiplicities, models=args.models, - use_emcee=args.emcee, plot_only=args.plot_only, overwrite=args.overwrite, - verbose=args.verbose, logger=logger, bands=args.bands) + logger = None # dummy + + for i, folder in enumerate(args.folders): + print("{} of {}: {}".format(i + 1, len(args.folders), folder)) + kwargs = dict( + multiplicities=multiplicities, + models=args.models, + use_emcee=args.emcee, + feh_prior=args.fehprior, + plot_only=args.plot_only, + overwrite=args.overwrite, + verbose=args.verbose, + logger=logger, + bands=args.bands, + ) if args.gaia: - kwargs['write_ini_file'] = args.write_ini - kwargs['rootdir'] = args.rootdir + kwargs["write_ini_file"] = args.write_ini + kwargs["rootdir"] = args.rootdir mod, logger = starfit_fn(folder, **kwargs) @@ -95,4 +103,3 @@ if __name__=='__main__': # Don't know why this is necessary? Haven't been able to track down where file gets left open. # But this is necessary to avoid building up of open files. tables.file._open_files.close_all() -