import subprocess
import pandas as pd
import sys
import os

import viewdat_cno_lib as vdl


action_logs = [
        'action_log_1.csv',
        'action_log_2.csv',
        'action_log_3.csv',
        'action_log_4.csv',
        'action_log_5.csv',
        'action_log_6.csv',
        'action_log_7.csv',
        ]
log_cols = ['start_mdt', 'end_mdt', 'action', 'boom', 'start_utc', 'end_utc',
            'start_sec', 'end_sec', 'dt_sec']

t04s = ['BX992_all.T04', 'EB1-5093_all.T04', 'EB1-5095_all.T04', 'P4-05_all.T04']

d_list = []
for f in action_logs:
    test_num = int(f.split('_')[2].split('.')[0])
    #print(f, test_num)
    df_log = pd.read_csv(f, names=log_cols, skiprows=6)
    #print(df_log)
    start = df_log.iloc[0, 6]
    end = df_log.iloc[-1, 7]
    print(f'{f=}', start, end)
    for t in t04s:
        dev = t.split('_')[0]
        if test_num > 5 and dev == 'EB1-5095':
            # We don't have data for this device in the last 2 tests.
            continue
        for ant in [0, 1]:
            per_test_csv_fname = os.path.join('per_test_data',
                                              t + f'_t{test_num}_ant{ant}.csv')
            if not os.path.isfile(per_test_csv_fname):
                print(f'ERROR: could not find {per_test_csv_fname}')
                continue
            df = pd.read_csv(per_test_csv_fname)

            if df.empty:
                continue

            for svt in df.SVType.unique():
                df_svt = df.query(f'SVType=="{svt}"')
                for freq in df.Freq.unique():
                    df_freq = df_svt.query(f'Freq=="{freq}"')
                    if df_freq.empty:
                        continue
                    for track in df.Track.unique():
                        df_track = df_freq.query(f'Track=={track}')
                        if df_track.empty:
                            continue
                        print('   ', test_num, dev, ant, svt, freq, vdl.D_TRACK_TYPE[int(track)])
                        for sv in df.SV.unique():
                            dfq = df_track.query(f'SV=={sv}').copy()
                            if dfq.empty:
                                continue

                            dfq['dCount'] = dfq.Count.diff()
                            dfq['dT'] = dfq.adj_time.diff()
                            #print(dfq)
                            #print(dfq.dCount.unique())
                            df_slips = dfq.query('dT==1 and dCount > 0')
                            #print(df_slips)
                            num_slips = df_slips.shape[0]
                            #print('   ', svt, freq, q, f'{num_slips=}')

                            d = {#'f': f,
                                 'test': test_num,
                                 'dev': dev,
                                 'ant': ant,
                                 #'df': df,
                                 'SVType': svt,
                                 'Freq': freq,
                                 'Track_name': vdl.D_TRACK_TYPE[int(track)],
                                 'Track': int(track),
                                 'SV': int(sv),
                                 'num_slips': num_slips,
                                 'num_obs':dfq.shape[0],
                                 }
                            #print(d)
                            d_list.append(d)

                            #sys.exit()


            #sys.exit()
            #break
df = pd.DataFrame(d_list)
print(df)
df.to_csv('per_test.csv', index=False)
