#!/usr/bin/env python

import glob
import numpy as np

# from uncertainties import ufloat
from uncertainties import unumpy
from uncertainties.unumpy import uarray


with open('power_scan2D.dat', 'w') as f:
    f.write('#Pump1\tPump2\tDelta\tdelta\t'
            'Pairs\tPairs_err\t'
            'Signal\tSignal_err\tIdler\tIdler_err\t'
            'eff_s\teff_s_err\teff_i\teff_i_err\t'
            'tau\ttau_err\n')

PUMP1 = np.array([.030, .130, .290, .420, .580, .640])
Delta = 60
delta = -3

filenames = glob.glob('*data_0*.dat')
with open('power_scan2D.dat', 'a') as f:
    for filename, p1 in zip(filenames, PUMP1):
        raw_data = np.genfromtxt(filename)
        p_776 = (250 * (raw_data[:, 0] - 19) / (4750 * 0.5))
        pairs_p = raw_data[:, 3]
        signal_p = raw_data[:, 5]
        idler_p = raw_data[:, 7]
        pairs_p_err = raw_data[:, 4]
        signal_p_err = raw_data[:, 6]
        idler_p_err = raw_data[:, 8]
        eff = uarray(pairs_p, pairs_p_err) / uarray(signal_p, signal_p_err)
        eff_s = unumpy.nominal_values(eff)
        eff_s_err = unumpy.std_devs(eff)
        eff = uarray(pairs_p, pairs_p_err) / uarray(idler_p, idler_p_err)
        eff_i = unumpy.nominal_values(eff)
        eff_i_err = unumpy.std_devs(eff)
        tau = raw_data[:, 9]
        tau_err = raw_data[:, 10]

        [f.write(('{}\t' * 16 + '\n').format(p1, p2,
                                             Delta, delta,
                                             r, re,
                                             s, se, i, ie,
                                             efs, efse,
                                             efi, efie,
                                             t, te))
         for p2, r, re, s, se, i, ie, efs, efse, efi, efie, t, te
         in zip(p_776, pairs_p, pairs_p_err,
                signal_p, signal_p_err, idler_p, idler_p_err,
                eff_s, eff_s_err, eff_i, eff_i_err,
                tau, tau_err)]
