#!/usr/bin/env python
# coding: utf-8

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import argparse
import json

parser = argparse.ArgumentParser()
parser.add_argument("--i",type=str, nargs='+',
                    help="input files")
parser.add_argument("--o",type=str, default='pp-plot.png',
                    help="outfile")                    
args = parser.parse_args()

results = []
for f_loc in args.i:
    with open(f_loc, 'r') as f:
        data = json.load(f)
        results.append(data['p_value'])

results = np.array(results)

percentiles = np.linspace(0,1,1001)

raw_pp = np.array([sum(results < p) for p in percentiles])/len(results)

# expected fit
pp_error = np.sqrt(percentiles*(1-percentiles)/len(results))

plt.style.use('seaborn')
fig = plt.figure(figsize=[6,6])
ax = fig.gca()
ax.plot(percentiles, raw_pp,label='Raw',color='C5', lw=2)
ax.plot(percentiles, percentiles,color='k',ls=':')
ax.set_xlim(0,1)
ax.set_ylim(0,1)
ax.fill_between(percentiles, percentiles+3*pp_error, percentiles-3*pp_error,
                color='k', alpha=0.05)
ax.fill_between(percentiles, percentiles+2*pp_error, percentiles-2*pp_error,
                color='k', alpha=0.10)
ax.fill_between(percentiles, percentiles+pp_error, percentiles-pp_error,
                color='k', alpha=0.15)
csfont = {'fontname':'Verdana'}
ax.set_title('Credible Region Percentiles',fontsize=14,**csfont)
ax.set_xlabel('Credible region of true location',fontsize=12)
ax.set_ylabel('Fraction of simulated signals',fontsize=12)
ax.grid(alpha=0.5,which='both')
ax.legend(fontsize=12)
fig.savefig(args.o)
