aboutsummaryrefslogtreecommitdiffstats
path: root/sens.py
diff options
context:
space:
mode:
authorshivesh <s.p.mandalia@qmul.ac.uk>2018-04-28 17:01:52 -0500
committershivesh <s.p.mandalia@qmul.ac.uk>2018-04-28 17:01:52 -0500
commitc37932036698600c7b44d2ff15aac6784d201098 (patch)
tree5b0425d812a9f39cce0f59a3a617b6e472c79f90 /sens.py
parent45e8e4fa58e0c04c16b3000152dd08f2f6f8926e (diff)
downloadGolemFlavor-c37932036698600c7b44d2ff15aac6784d201098.tar.gz
GolemFlavor-c37932036698600c7b44d2ff15aac6784d201098.zip
Sat Apr 28 17:01:52 CDT 2018
Diffstat (limited to 'sens.py')
-rwxr-xr-xsens.py74
1 files changed, 44 insertions, 30 deletions
diff --git a/sens.py b/sens.py
index 50fe0c8..f352149 100755
--- a/sens.py
+++ b/sens.py
@@ -84,6 +84,10 @@ def process_args(args):
'--sens-run and --fix-scale cannot be used together'
)
+ if args.sens_eval_bin is not None and args.plot_statistic:
+ print 'Cannot make plot when specific scale bin is chosen'
+ args.plot_statistic = False
+
args.measured_ratio = fr_utils.normalise_fr(args.measured_ratio)
if args.fix_source_ratio:
args.source_ratio = fr_utils.normalise_fr(args.source_ratio)
@@ -160,6 +164,7 @@ def parse_args(args=None):
if args is None: return parser.parse_args()
else: return parser.parse_args(args.split())
+
def main():
args = parse_args()
process_args(args)
@@ -192,16 +197,19 @@ def main():
np.log10(args.scale_region[0]), np.log10(args.scale_region[1]), args.sens_bins
)
- if args.sens_eval_bin is None:
- eval_dim = args.sens_bins
- else: eval_dim = 1
+ corr_angles_categ = [SensitivityCateg.CORR_ANGLE, SensitivityCateg.CORR_ONE_ANGLE]
+ fixed_angle_categ = [SensitivityCateg.FIXED_ANGLE, SensitivityCateg.FIXED_ONE_ANGLE]
- if args.run_method is SensitivityCateg.CORR_ANGLE:
- scan_angles = np.linspace(0+1e-9, 1-1e-9, eval_dim)
+ if args.run_method in corr_angles_categ:
+ scan_angles = np.linspace(0+1e-9, 1-1e-9, args.sens_bins)
else: scan_angles = np.array([0])
print 'scan_scales', scan_scales
print 'scan_angles', scan_angles
+ if args.sens_eval_bin is None:
+ eval_dim = args.sens_bins
+ else: eval_dim = 1
+
out = args.outfile+'/{0}/{1}/fr_stat'.format(args.stat_method, args.run_method) \
+ misc_utils.gen_identifier(args)
if args.sens_run:
@@ -218,18 +226,17 @@ def main():
if args.run_method is SensitivityCateg.FULL:
statistic_arr = np.full((eval_dim, 2), np.nan)
- elif args.run_method is SensitivityCateg.FIXED_ANGLE:
+ elif args.run_method in fixed_angle_categ:
statistic_arr = np.full((len(st_paramset_arr), eval_dim, 2), np.nan)
- elif args.run_method is SensitivityCateg.CORR_ANGLE:
+ elif args.run_method in corr_angles_categ:
statistic_arr = np.full(
(len(st_paramset_arr), eval_dim, eval_dim, 3), np.nan
)
for idx_scen, sens_paramset in enumerate(st_paramset_arr):
print '|||| SCENARIO = {0}'.format(idx_scen)
- if args.run_method in [SensitivityCateg.FIXED_ONE_ANGLE, SensitivityCateg.FIXED_ANGLE]:
- if SensitivityCateg.FIXED_ANGLE:
- for x in mmangles: x.value = 0.+1e-9
+ if args.run_method in fixed_angle_categ:
+ for x in mmangles: x.value = 0.+1e-9
if idx_scen == 0 or idx_scen == 2:
mmangles[idx_scen].value = np.sin(np.pi/4., dtype=DTYPE)**2
"""s_12^2 or s_23^2"""
@@ -238,22 +245,24 @@ def main():
"""c_13^4"""
for idx_an, an in enumerate(scan_angles):
- if args.run_method in [SensitivityCateg.CORR_ANGLE,
- SensitivityCateg.CORR_ONE_ANGLE]:
- print '|||| ANGLE = {0:<04.2}'.format(an)
- if SensitivityCateg.CORR_ANGLE:
- for x in mmangles: x.value = 0.+1e-9
+ if args.run_method in corr_angles_categ:
+ for x in mmangles: x.value = 0.+1e-9
mmangles[idx_scen].value = an
for idx_sc, sc in enumerate(scan_scales):
if args.sens_eval_bin is not None:
- if idx_sc == args.sens_eval_bin:
- out += '_scale_{0:.0E}'.format(np.power(10, sc))
- if args.run_method is SensitivityCateg.CORR_ANGLE:
- out += '_angle_{0:>03}'.format(int(an*100))
- break
+ if args.run_method in corr_angles_categ:
+ index = idx_an*args.sens_bins + idx_sc
+ else: index = idx_sc
+ if index == args.sens_eval_bin:
+ if idx_scen == 0:
+ out += '_scale_{0:.0E}'.format(np.power(10, sc))
+ if args.run_method in corr_angles_categ:
+ out += '_angle_{0:<04.2}'.format(an)
else: continue
+ if idx_sc == 0 or args.sens_eval_bin is not None:
+ print '|||| ANGLE = {0:<04.2}'.format(float(an))
print '|||| SCALE = {0:.0E}'.format(np.power(10, sc))
scale.value = sc
if args.stat_method is StatCateg.BAYESIAN:
@@ -296,10 +305,16 @@ def main():
print '=== final llh', stat
if args.run_method is SensitivityCateg.FULL:
statistic_arr[idx_sc] = np.array([sc, stat])
- elif args.run_method is SensitivityCateg.FIXED_ANGLE:
- statistic_arr[idx_scen][idx_sc] = np.array([sc, stat])
- elif args.run_method is SensitivityCateg.CORR_ANGLE:
- statistic_arr[idx_scen][idx_an][idx_sc] = np.array([an, sc, stat])
+ elif args.run_method in fixed_angle_categ:
+ if args.sens_eval_bin is not None:
+ statistic_arr[idx_scen][0] = np.array([sc, stat])
+ else:
+ statistic_arr[idx_scen][idx_sc] = np.array([sc, stat])
+ elif args.run_method in corr_angles_categ:
+ if args.sens_eval_bin is not None:
+ statistic_arr[idx_scen][0][0] = np.array([an, sc, stat])
+ else:
+ statistic_arr[idx_scen][idx_an][idx_sc] = np.array([an, sc, stat])
misc_utils.make_dir(out)
print 'Saving to {0}'.format(out+'.npy')
@@ -310,7 +325,7 @@ def main():
else: raw = np.load(out+'.npy')
data = ma.masked_invalid(raw, 0)
- basename = os.path.dirname(out) + '/mnrun/' + os.path.basename(out)
+ basename = os.path.dirname(out) + '/statrun/' + os.path.basename(out)
baseoutfile = basename[:5]+basename[5:].replace('data', 'plots')
if args.run_method is SensitivityCateg.FULL:
plot_utils.plot_statistic(
@@ -320,7 +335,7 @@ def main():
args = args,
scale_param = scale
)
- elif args.run_method is SensitivityCateg.FIXED_ANGLE:
+ elif args.run_method in fixed_angle_categ:
for idx_scen in xrange(len(st_paramset_arr)):
print '|||| SCENARIO = {0}'.format(idx_scen)
outfile = baseoutfile + '_SCEN{0}'.format(idx_scen)
@@ -335,7 +350,7 @@ def main():
scale_param = scale,
label = label
)
- elif args.run_method is SensitivityCateg.CORR_ANGLE:
+ elif args.run_method in corr_angles_categ:
for idx_scen in xrange(len(st_paramset_arr)):
print '|||| SCENARIO = {0}'.format(idx_scen)
basescenoutfile = baseoutfile + '_SCEN{0}'.format(idx_scen)
@@ -343,11 +358,11 @@ def main():
elif idx_scen == 1: label = r'$\mathcal{O}_{13}='
elif idx_scen == 2: label = r'$\mathcal{O}_{23}='
for idx_an, an in enumerate(scan_angles):
- print '|||| ANGLE = {0:<04.2}'.format(an)
+ print '|||| ANGLE = {0:<04.2}'.format(float(an))
outfile = basescenoutfile + '_ANGLE{0}'.format(idx_an)
_label = label + r'{0:<04.2}$'.format(an)
plot_utils.plot_statistic(
- data = data[idx_scen][idx_an][:,1:],
+ data = data[idx_scen][index][:,1:],
outfile = outfile,
outformat = ['png'],
args = args,
@@ -361,4 +376,3 @@ main.__doc__ = __doc__
if __name__ == '__main__':
main()
-