Newer
Older
LbLcsFormFactors / eos-toys / plot-sample.py
# -*- coding: utf-8 -*-
# @Author: Elena Graverini
# @Date:   2017-03-16 11:20:45
# @Last Modified by:   Elena Graverini
# @Last Modified time: 2017-03-21 11:38:40
# import matplotlib
from __future__ import division
import sys, os, gc
import matplotlib.pyplot as plt
from eosdata import MCMCDataFile  # , Plotter1D
import pickle


def main():
    input_file = "constantFF/samples-mu-2.hdf5"
    save_name = 'test-output.pdf'
    if len(sys.argv) > 1:
        input_file = str(sys.argv[1])
    else:
        print('Warning: no input / output file names specified.\nUsing %s and %s.' % (input_file, save_name))
    if len(sys.argv) > 2:
        save_name = str(sys.argv[2])
    pklfilename = save_name.replace('.pdf', '.pkl')
    suffix = 'prescaled_10'
    if not os.path.isfile(pklfilename):
        datafile = MCMCDataFile(input_file)
        # print(datafile.parameters[0])
        gc.collect()
        data = datafile.data()[:, 0]
        d = {}
        reduced_data = data[::10]
        d['reduced_data'] = reduced_data
        n, bins, patches = plt.hist(reduced_data, bins=100, normed=True, alpha=0.3)
        bin_centers = (bins[:-1] + bins[1:]) / 2
        d['bin_contents'] = n
        d['bin_centers'] = bin_centers
        pickle.dump(d, open(pklfilename, 'wb'))
    else:
        d = pickle.load(open(pklfilename, 'rb'))
        plt.scatter(d['bin_centers'], d['bin_contents'])
        suffix += '_scatter'
    plt.savefig(save_name.replace('.pdf', '_%s.pdf' % suffix))
    # # plt.figure()
    # p1d = Plotter1D(datafile, save_name)
    # p1d.histogram(0, xmin=None, xmax=None, kde=None)


def superimpose(files, labels, outname):
    colors = ['#0078FF', '#FF6600', '#0AAFB6', '#FF3333', '#0000FF', '#00CC00', '#BF8040', '#FF33CC', '#FF7733']
    ds = []
    for f in files:
        ds.append(pickle.load(open(f, 'rb')))
    for i in range(len(files)):
        plt.plot(ds[i]['bin_centers'], ds[i]['bin_contents'], label=labels[i], color=colors[i], linewidth=2.0)
    plt.legend(loc='best')
    plt.savefig(outname)
    plt.close("all")


def makeFileFromMarzia(x, y, fname):
    ds = {
        'bin_centers': x,
        'bin_contents': y,
    }
    if not os.path.isfile(fname):
        os.system('mkdir -p %s' % os.path.dirname(fname))
        pickle.dump(ds, open(fname, 'wb'))


if __name__ == '__main__':
    # main()
    marzia_f = 'Marzia/Marzia_constantFF.pkl'
    mx = [0.2, 0.4, 0.80, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5]
    my = [0.0102553, 0.0110076, 0.0123026, 0.0128953, 0.0142323, 0.015366, 0.0162975, 0.0170258, 0.0175493, 0.0178644, 0.0179659, 0.0178455, 0.017491, 0.016884, 0.0159959, 0.0147803, 0.0131556, 0.0109562, 0.00773188]
    makeFileFromMarzia(mx, my, marzia_f)
    files_mu = ['constantFF/mcmc_gamma_muons.pkl', '1pole/mcmc_gamma_muons_1pole.pkl', '1pole_x_sqrtlambda/mcmc_gamma_muonss_1pole_x_sqrtlambda.pkl', marzia_f]
    out_mu = 'comparison_mu.pdf'
    files_tau = ['constantFF/mcmc_gamma_taus.pkl', '1pole/mcmc_gamma_taus_1pole.pkl', '1pole_x_sqrtlambda/mcmc_gamma_taus_1pole_x_sqrtlambda.pkl']
    out_tau = 'comparison_tau.pdf'
    labels = ['Constant FF', 'One pole', r'One pole $\times\; \sqrt{\lambda}$', 'MB: constant FF']
    superimpose(files_mu, labels, out_mu)
    superimpose(files_tau, labels, out_tau)