From a6ced28fe29f5dc82108f14e310a0c6b5f04b3c7 Mon Sep 17 00:00:00 2001 From: shivesh Date: Mon, 19 Mar 2018 18:37:56 -0500 Subject: bug fixes --- fr.py | 30 +++++++++++++++++------------- submitter/make_dag.py | 10 +++++++++- submitter/submit.sub | 8 ++++---- utils/gf.py | 12 ++++++------ utils/mcmc.py | 9 +++++---- utils/misc.py | 4 ---- 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/fr.py b/fr.py index 7a53956..4c95f81 100755 --- a/fr.py +++ b/fr.py @@ -17,7 +17,7 @@ import numpy as np from utils import mcmc as mcmc_utils from utils import misc as misc_utils -from utils.enums import ParamTag +from utils.enums import Likelihood, ParamTag from utils.fr import MASS_EIGENVALUES, normalise_fr from utils.gf import gf_argparse from utils.misc import Param, ParamSet @@ -52,17 +52,21 @@ def get_paramsets(args): """Make the paramsets for generating the Asmimov MC sample and also running the MCMC. """ - nuisance_paramset = define_nuisance() - for parm in nuisance_paramset: - parm.value = args.__getattribute__(parm.name) - asimov_paramset = ParamSet( - nuisance_paramset.params + - [Param(name='astroENorm' , value=args.measured_ratio[0], ranges=[0., 1.], std=0.2), - Param(name='astroMuNorm' , value=args.measured_ratio[1], ranges=[0., 1.], std=0.2), - Param(name='astroTauNorm' , value=args.measured_ratio[2], ranges=[0., 1.], std=0.2)] - ) - + asimov_paramset = [] mcmc_paramset = [] + if args.likelihood == Likelihood.GOLEMFIT: + nuisance_paramset = define_nuisance() + asimov_paramset.extend([nuisance_paramset.params]) + mcmc_paramset.extend([nuisance_paramset.params]) + for parm in nuisance_paramset: + parm.value = args.__getattribute__(parm.name) + asimov_paramset.extend([ + Param(name='astroENorm' , value=args.measured_ratio[0], ranges=[0., 1.], std=0.2), + Param(name='astroMuNorm' , value=args.measured_ratio[1], ranges=[0., 1.], std=0.2), + Param(name='astroTauNorm', value=args.measured_ratio[2], ranges=[0., 1.], std=0.2) + ]) + asimov_paramset = ParamSet(asimov_paramset) + if not args.fix_mixing: tag = ParamTag.MMANGLES mcmc_paramset.extend([ @@ -84,8 +88,8 @@ def get_paramsets(args): Param(name='s_phi4', value=0.5, ranges=[0., 1.], std=0.2, tex=r'sin^4(\phi)', tag=tag), Param(name='c_2psi', value=0.5, ranges=[0., 1.], std=0.2, tex=r'cos(2\psi)', tag=tag) ]) - mcmc_paramset = ParamSet(nuisance_paramset.params + mcmc_paramset) - return nuisance_paramset, mcmc_paramset + mcmc_paramset = ParamSet(mcmc_paramset) + return asimov_paramset, mcmc_paramset def process_args(args): diff --git a/submitter/make_dag.py b/submitter/make_dag.py index ccd1fee..daddb65 100644 --- a/submitter/make_dag.py +++ b/submitter/make_dag.py @@ -75,7 +75,7 @@ with open(outfile, 'w') as f: for en in energy: print 'energy {0:.0E}'.format(en) - outchain_head = '/data/user/smandalia/flavour_ratio/data/DIM{0}/{1:.0E}'.format(dim, en) + outchain_head = '/data/user/smandalia/flavour_ratio/data/{0}/DIM{1}/{2:.0E}'.format(likelihood, dim, en) for sig in sigma_ratio: print 'sigma', sig @@ -109,11 +109,15 @@ with open(outfile, 'w') as f: f.write('VARS\tjob{0}\tconvNorm="{1}"\n'.format(job_number, convNorm)) f.write('VARS\tjob{0}\tmuonNorm="{1}"\n'.format(job_number, muonNorm)) f.write('VARS\tjob{0}\tpromptNorm="{1}"\n'.format(job_number, promptNorm)) + f.write('VARS\tjob{0}\tdata="{1}"\n'.format(job_number, data)) + f.write('VARS\tjob{0}\tpriors="{1}"\n'.format(job_number, priors)) f.write('VARS\tjob{0}\taft="{1}"\n'.format(job_number, aft)) f.write('VARS\tjob{0}\tast="{1}"\n'.format(job_number, ast)) f.write('VARS\tjob{0}\taxs="{1}"\n'.format(job_number, axs)) f.write('VARS\tjob{0}\tplot_angles="{1}"\n'.format(job_number, plot_angles)) f.write('VARS\tjob{0}\tplot_elements="{1}"\n'.format(job_number, plot_elements)) + f.write('VARS\tjob{0}\tseed="{1}"\n'.format(job_number, seed)) + f.write('VARS\tjob{0}\tthreads="{1}"\n'.format(job_number, threads)) job_number += 1 for frs in full_scan_mfr: @@ -146,9 +150,13 @@ with open(outfile, 'w') as f: f.write('VARS\tjob{0}\tconvNorm="{1}"\n'.format(job_number, convNorm)) f.write('VARS\tjob{0}\tmuonNorm="{1}"\n'.format(job_number, muonNorm)) f.write('VARS\tjob{0}\tpromptNorm="{1}"\n'.format(job_number, promptNorm)) + f.write('VARS\tjob{0}\tdata="{1}"\n'.format(job_number, data)) + f.write('VARS\tjob{0}\tpriors="{1}"\n'.format(job_number, priors)) f.write('VARS\tjob{0}\taft="{1}"\n'.format(job_number, aft)) f.write('VARS\tjob{0}\tast="{1}"\n'.format(job_number, ast)) f.write('VARS\tjob{0}\taxs="{1}"\n'.format(job_number, axs)) f.write('VARS\tjob{0}\tplot_angles="{1}"\n'.format(job_number, plot_angles)) f.write('VARS\tjob{0}\tplot_elements="{1}"\n'.format(job_number, plot_elements)) + f.write('VARS\tjob{0}\tseed="{1}"\n'.format(job_number, seed)) + f.write('VARS\tjob{0}\tthreads="{1}"\n'.format(job_number, threads)) job_number += 1 diff --git a/submitter/submit.sub b/submitter/submit.sub index 07c0a85..b57c64c 100644 --- a/submitter/submit.sub +++ b/submitter/submit.sub @@ -1,10 +1,10 @@ -Executable = /home/smandalia/Documents/flavour_ratio/mcmc_scan.py +Executable = /data/user/smandalia/GolemTools/sources/GolemFit/scripts/flavour_ratio/fr.py Arguments = "--aft $(aft) --ast $(ast) --astroDeltaGamma $(astroDeltaGamma) --astroNorm $(astroNorm) --axs $(axs) --burnin $(burnin) --convNorm $(convNorm) --data $(data) --dimension $(dimension) --energy $(energy) --fix-mixing $(fix_mixing) --fix-scale $(fix_scale) --fix-source-ratio $(fix_source_ratio) --likelihood $(likelihood) --measured-ratio $(mr0) $(mr1) $(mr2) --muonNorm $(muonNorm) --no-bsm $(no_bsm) --nsteps $(nsteps) --nwalkers $(nwalkers) --outfile $(outfile) --plot-angles $(plot_angles) --plot-elements $(plot_elements) --priors $(priors) --promptNorm $(promptNorm) --run-mcmc $(run_mcmc) --scale $(scale) --scale-region $(scale_region) --seed $(seed) --sigma-ratio $(sigma_ratio) --source-ratio $(sr0) $(sr1) $(sr2) --threads $(threads)" # All logs will go to a single file -log = /home/smandalia/Documents/flavour_ratio/submitter/logs/job_$(Cluster).log -output = /home/smandalia/Documents/flavour_ratio/submitter/logs/job_$(Cluster).out -error = /home/smandalia/Documents/flavour_ratio/submitter/logs/job_$(Cluster).err +log = /data/user/smandalia/GolemTools/sources/GolemFit/scripts/flavour_ratio/submitter/logs/job_$(Cluster).log +output = /data/user/smandalia/GolemTools/sources/GolemFit/scripts/flavour_ratio/submitter/logs/job_$(Cluster).out +error = /data/user/smandalia/GolemTools/sources/GolemFit/scripts/flavour_ratio/submitter/logs/job_$(Cluster).err getenv = True # environment = "X509_USER_PROXY=x509up_u14830" diff --git a/utils/gf.py b/utils/gf.py index 766c161..99b1f24 100644 --- a/utils/gf.py +++ b/utils/gf.py @@ -15,7 +15,7 @@ from functools import partial import GolemFitPy as gf from utils.enums import * -from utils.misc import enum_keys, enum_parse +from utils.misc import enum_parse def data_distributions(fitter): @@ -81,25 +81,25 @@ def gen_steering_params(steering_categ, quiet=False): def gf_argparse(parser): parser.add_argument( '--data', default='real', type=partial(enum_parse, c=DataType), - choices=enum_keys(DataType), help='select datatype' + choices=DataType, help='select datatype' ) parser.add_argument( '--ast', default='baseline', type=partial(enum_parse, c=SteeringCateg), - choices=enum_keys(SteeringCateg), + choices=SteeringCateg, help='use asimov/fake dataset with specific steering' ) parser.add_argument( '--aft', default='hesespl', type=partial(enum_parse, c=FitCateg), - choices=enum_keys(FitCateg), + choices=FitCateg, help='use asimov/fake dataset with specific Fit' ) parser.add_argument( '--axs', default='nom', type=partial(enum_parse, c=XSCateg), - choices=enum_keys(XSCateg), + choices=XSCateg, help='use asimov/fake dataset with xs scaling' ) parser.add_argument( '--priors', default='uniform', type=partial(enum_parse, c=Priors), - choices=enum_keys(Priors), help='Bayesian priors' + choices=Priors, help='Bayesian priors' ) diff --git a/utils/mcmc.py b/utils/mcmc.py index aebe12f..995a338 100644 --- a/utils/mcmc.py +++ b/utils/mcmc.py @@ -18,9 +18,11 @@ import tqdm import numpy as np from scipy.stats import multivariate_normal +import GolemFitPy as gf + from utils import fr as fr_utils from utils.enums import Likelihood -from utils.misc import enum_keys, enum_parse, make_dir, parse_bool +from utils.misc import enum_parse, make_dir, parse_bool def lnprior(theta, paramset): @@ -65,7 +67,7 @@ def mcmc(p0, triangle_llh, lnprior, ndim, nwalkers, burnin, nsteps, ntemps=1, th def mcmc_argparse(parser): parser.add_argument( '--likelihood', default='gaussian', type=partial(enum_parse, c=Likelihood), - choices=enum_keys(Likelihood), help='likelihood contour' + choices=Likelihood, help='likelihood contour' ) parser.add_argument( '--run-mcmc', type=parse_bool, default='True', @@ -137,14 +139,13 @@ def triangle_llh(theta, args): ) fr = fr_utils.u_to_fr((fr1, fr2, fr3), u) - fr_bf = args.measured_ratio if args.likelihood is Likelihood.FLAT: return 1. elif args.likelihood is Likelihood.GAUSSIAN: + fr_bf = args.measured_ratio return gaussian_llh(fr, fr_bf, args.sigma_ratio) elif args.likelihood is Likelihood.GOLEMFIT: raise NotImplementedError('TODO') - import GolemFitPy as gf from collections import namedtuple datapaths = gf.DataPaths() IceModels = namedtuple('IceModels', 'std_half2') diff --git a/utils/misc.py b/utils/misc.py index 2ff0664..108a458 100644 --- a/utils/misc.py +++ b/utils/misc.py @@ -252,10 +252,6 @@ def print_args(args): print '== {0:<25} = {1}'.format(key, arg_vars[key]) -def enum_keys(e): - return e.__members__.keys() - - def enum_parse(s, c): return c[s.upper()] -- cgit v1.2.3