import pandas as pd
import numpy as np
from scipy import fft
from os import listdir
from os.path import isfile, join
from plotly import express as px

dirs = [f for f in listdir('data') if not isfile(join('data', f))]
rolling_value = 30
window_value = 150
sliding_value = 20
for path in dirs:
    df = pd.read_csv(f"data/{path}/Accelerometer.csv")
    df_x = df.loc[:, 'x'].rolling(rolling_value).mean().values[rolling_value:]
    df_y = df.loc[:, 'y'].rolling(rolling_value).mean().values[rolling_value:]
    df_z = df.loc[:, 'z'].rolling(rolling_value).mean().values[rolling_value:]
    acc_l2 = np.sqrt(np.power(df_x, 2) + np.power(df_y, 2) + np.power(df_z, 2))
    amplitude = []
    for i in range(int(np.floor((len(df)-rolling_value)/sliding_value))):
        acf = fft.fft(acc_l2[i*sliding_value:(i+1)*sliding_value])
        # number of signal points
        num = 30
        # sample spacing
        spacing = 1.0 / 1200.0
        freqp = fft.fftfreq(num,spacing)
        sample_freq = fft.fftshift(freqp)
        freq = fft.fftshift(acf)
        freq = np.abs(freq)

        amplitude.append(np.max(freq))

        # plot = pd.DataFrame(freq)
        # graph = px.bar(plot)
        # graph.update_layout(
        #     yaxis_range = [0,500]
        # )
    fig = px.bar(pd.DataFrame(amplitude))
    fig.update_layout(
        yaxis_range = [0,100]
    )
    fig.show()