import sys
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 plotSP(row, ax):
    trace = pd.read_csv(row["file"])
    ax.cla()
    txt = "{:.2f} + ({:.1f}) GHz".format(row["freq"], row["off"])
    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("spurious600/SP*.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]
    offs = [float(x.split('_')[3]) for x in files]

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

    fig, axs = plt.subplots(nrows=4, ncols=2, sharex=True, sharey=True, figsize = (8.5,11))

    gen = df.iterrows()
    for i in range(0, df.shape[0], 8):
        for j in range(4):
            for k in range(2):
                row = next(gen)[1]
                if j == 0 and k == 0:
                    print("next frequency: {}, {}".format(i, row["freq"]))
                plotSP(row, axs[j][k])
        plt.tight_layout()
        plt.pause(0.1)

    plt.show()
