import numpy as np
import matplotlib.pyplot as plt
import scienceplots

i = 1

names = [
    "omnes_integrand",
    "omnes_integrand_zoom",
    "omnes_integrand_tan",
    "phi0_integrand",
    "phi0_integrand_zoom",
    "phi0_integrand_tan",
    "delta",
    "omnes",
    "phi0",
    "phi0_delta_rel_diff",
]

files = [open("exports/" + n + ".txt") for n in names]

export_filenames = ["figures/" + n + ".png" for n in names]

titles = [
    r"$\frac{\delta_1^1(s') - \delta_1^1(s)}{s'(s'-s)}$, $\sqrt{s}=1$ GeV",
    r"$\frac{\delta_1^1(s') - \delta_1^1(s)}{s'(s'-s)}$, $\sqrt{s}=1$ GeV",
    r"$\frac{1}{\cos^2(u)}\frac{\delta_1^1(\tan{u}) - \delta_1^1(s)}{\tan{u}(\tan{u}-s)}$, $\sqrt{s}=1$ GeV",
    r"$\frac{\ln{|\frac{F(s')}{F(s)}|^2}}{(x^2+s_0)(x^2+s_0-s)}$, $\sqrt{s}=1$ GeV",
    r"$\frac{\ln{|\frac{F(s')}{F(s)}|^2}}{(x^2+s_0)(x^2+s_0-s)}$, $\sqrt{s}=1$ GeV",
    r"$\frac{1}{\cos^2(u)}\frac{\ln{|\frac{F(\tan^2{u}+s_0)}{F(s)}|^2}}{(\tan^2{u}+s_0)(\tan^2{u}+s_0-s)}$, $\sqrt{s}=1$ GeV",
    "",
    "",
    "",
    "",
]

xlabels = [
    r"$\sqrt{s}$ [GeV]",
    r"$\sqrt{s}$ [GeV]",
    r"$u$",
    r"$x$",
    r"$x$",
    r"$u$",
    r"$\sqrt{s}$ [GeV]",
    r"$\sqrt{s}$ [GeV]",
    r"$\sqrt{s}$ [GeV]",
    r"$\sqrt{s}$ [GeV]",
]

ylabels = [
    r"integrand",
    r"integrand",
    r"integrand",
    r"integrand",
    r"integrand",
    r"integrand",
    r"$\delta_1^1(s)$",
    r"$|\Omega(s)|^2$",
    r"$\phi_0(s)$",
    r"$\frac{\phi_0(s)}{\delta_1^1(s)}$",
]

y_logarithmic = [
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    False,
    False,
]

x_sqrt = [
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
]

for i in range(len(names)):
    print(i)
    plt.figure()
    filecont = []
    for line in files[i]:
        filecont.append(line.split(','))

    data = []
    for curve in filecont:
        curve_numbers = []
        for val in curve:
            try:
                curve_numbers.append(float(val))
            except ValueError:
                continue
        if x_sqrt[i]:
            curve_numbers_paired = np.array([[x**0.5 for x in curve_numbers[0::2]], curve_numbers[1::2]])
        else:
            curve_numbers_paired = np.array([curve_numbers[0::2], curve_numbers[1::2]])
        data.append(curve_numbers_paired)

    # Plotting

    plt.style.use(['science'])

    plt.figure(figsize=(4,3))
    plt.title(titles[i], fontsize = 15)
    if y_logarithmic[i]:
        plt.yscale('log')
    for j in range(len(data)):
        plt.plot(data[j][0], data[j][1])
    plt.xlabel(xlabels[i], fontsize = 12)
    plt.ylabel(ylabels[i], fontsize = 12)
    plt.grid(which='major', color='#000000', linestyle='-', alpha = 0.3)
    plt.grid(which='minor', color='#000000', linestyle='-', alpha=0.1)
    plt.savefig(export_filenames[i], dpi=400)
    plt.close()
