#!/usr/bin/python
""" Make table of the foreground coincident events
"""
import argparse

parser = argparse.ArgumentParser()
# General required options
parser.add_argument('--trigger-file')
parser.add_argument('--bank-file')
parser.add_argument('--verbose', action='count')
parser.add_argument('--output-file')
parser.add_argument('--foreground-tag')
args = parser.parse_args()

import h5py, numpy, logging, pycbc.results, pycbc.results.followup
from pycbc.pnutils import mass1_mass2_to_mchirp_eta

if args.verbose:
    log_level = logging.INFO
    logging.basicConfig(format='%(asctime)s : %(message)s', level=log_level)
    
logging.info('Read in the foreground data')
f = h5py.File(args.trigger_file, 'r')
ifar = f['foreground/ifar'][:]
sorting = ifar.argsort()[::-1]
ifar = ifar[sorting]
ifar_exc = f['foreground/ifar_exc'][:][sorting]
fap = f['foreground/fap'][:][sorting]
fap_exc = f['foreground/fap_exc'][:][sorting]
stat = f['foreground/stat'][:][sorting]
time1 = f['foreground/time1'][:][sorting]
time2 = f['foreground/time2'][:][sorting]
template_id = f['foreground/template_id'][:][sorting].astype(numpy.uint32)
trigid1 = f['foreground/trigger_id1'][:][sorting].astype(numpy.uint32)
trigid2 = f['foreground/trigger_id2'][:][sorting].astype(numpy.uint32)

logging.info('Found %s foreground triggers' % len(stat))

logging.info('Read in the template bank data to get template parameters')
f = h5py.File(args.bank_file, 'r')
mass1 = f['mass1'][:][template_id]
mass2 = f['mass2'][:][template_id]
spin1z = f['spin1z'][:][template_id]
spin2z = f['spin2z'][:][template_id]

mchirp, eta = mass1_mass2_to_mchirp_eta(mass1, mass2)

columns = [ifar_exc, ifar, fap_exc, fap, stat,  time1,
           (time2-time1)*1000, mchirp, mass1, mass2, spin1z, spin2z]
names = ['IFAR with Rem. (YR)', 'IFAR (YR)', 'FAP with Rem.', 'FAP', 'Combined NewSNR', 'End Time', 
         'Time Diff. (ms)', 'mchirp', 'm1', 'm2',
         's1z', 's2z']
format_strings = ['#.###E0', '#.###E0', '#.##E0', '#.##E0', '##.###',
                  None, '##.##', '##.##', '##.##',
                  '##.##', '##.##', '##.##']

logging.info('Making table of foreground triggers')
html_table = pycbc.results.table(columns, names, 
                                 format_strings=format_strings, page_size=10)

f = open(args.output_file, 'w')
f.write(html_table)
