import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir) 

import my_plotting
import numpy as np
import matplotlib.pyplot as plt
#import scipy.signal as s
import seaborn as sb
import pandas as pd

#Takes a voltage trace and returns the magnitude of an EPSP
#resulting from an input at time time.
def calc_IPSC(c, time = 4000):
    base = c[time - 2]
    peak = min(c[time - 2:])
    return peak - base

#Takes a file with some number of voltage traces, each with one EPSP.
#Returns an array of EPSP magnitudes.
def calc_IPSCs(file, time = 4000):
    data = np.array(my_plotting.load_dataset(file, groups=1))
    ipscs = np.zeros(data.shape[1])

    for i in range(len(ipscs)):
        ipscs[i] = calc_IPSC(data[:, i], time=time)

    return ipscs

# def save_EPSPs(file, output, time = 4000):
#     epsps = calc_EPSPs(file, time)

#     df = pd.read_csv(output)
#     df["EPSP"] = epsps
#     df.to_csv(output, index=False)

# def plot_EPSPs(file, time = 4000):
#     epsps = calc_EPSPs(file, time)

#     # plt.figure()
#     # plt.hist(epsps, bins = 400)

#     # plt.figure()
#     # plt.hist(epsps, bins = 400)
#     # plt.xscale("log")
#     print("Mean: ", np.mean(epsps))
#     print("Std: ", np.std(epsps))
#     plt.figure()
#     sb.distplot(epsps)
#     plt.xscale('log')

#     plt.figure()
#     sb.distplot(epsps)

#     plt.show()

# def plot_scatter(file, label=None):
#     df = pd.read_csv(file)
#     plt.scatter(df["Distance"], df["EPSP"], label=label)
#     #plt.show()

# plot_scatter("EPSPs.csv")
# plot_scatter("EPSP_files/0.4_EPSPs.csv")
# plt.show()
#save_EPSPs("output/v_report.h5", "synapse_info.csv")
#plot_EPSPs("output/v_report.h5")
#plot_EPSPs("results/500-0.65-0.48v_report.h5")
#import pdb; pdb.set_trace()