import glob
from datetime import datetime

import numpy as np
import pandas as pd
from matplotlib.backends.backend_pdf import PdfPages
import matplotlib.pyplot as plt

def plotSR(row, ax):
    trace = pd.read_csv(row["file"])
    ax.cla()
    txt = "{:.3f} ({:.6f}) GHz {}".format(row["freq"]*24.0, row["freq"], row["sb"])
    ax.plot(trace["freq"], trace["power"], 'b-', label=txt)
    ax.set_ylim(-100, 0)
    ax.set_xlabel("frequency")
    ax.set_ylabel("power")
    ax.grid()
    ax.legend()

if __name__ == "__main__":
    files = glob.glob("spectralresponse600/SR*.trace")
    files = sorted(files)
    tstamp = [datetime.strptime(x.split('_')[1], "%y%m%d-%H%M%S") for x in files]
    freqs = [float(x.split('_')[2]) for x in files]
    sideband = [x.split('_')[3] for x in files]

    df = pd.DataFrame({"file": files, "tstamp": tstamp, "freq": freqs, "sb": sideband})
    print(df)
    print("number of traces = {}".format(df.shape[0]))
    assert((df.shape[0] % 2) == 0), "number of traces should be even"
    assert((df.shape[0] // 2) == 213), "number of frequencies should be 213"

    fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True, sharey=True, figsize = (8.5,11))

    gen = df.iterrows()
    for i in range(0, df.shape[0], 2):
        print("next pair of traces: {},{}".format(i, i+1))
        row = next(gen)[1]
        plotSR(row, ax1)
        row = next(gen)[1]
        plotSR(row, ax2)
        plt.tight_layout()
        plt.pause(0.1)

    plt.show()
