import nixio as nix
import os
import numpy as np
from IPython import embed

def read_baseline_eod(dataset):
    base = dataset.split(os.path.sep)[-1] + ".nix"
    nix_file = nix.File.open(os.path.join(dataset, base), nix.FileMode.ReadOnly)
    b = nix_file.blocks[0]
    if 'BaselineActivity_1' in b.tags:
        t = b.tags["BaselineActivity_1"]
    elif "BaselineActivity_2" in b.tags:
        t = b.tags["BaselineActivity_2"]
    else:
        f.close()
        return [],[]
    eod_da = b.data_arrays["LocalEOD-1"]
    eod = t.retrieve_data("LocalEOD-1")[:]
    time = np.asarray(eod_da.dimensions[0].axis(len(eod)))
    nix_file.close()
    return time, eod


def read_baseline_spikes(dataset):
    base = dataset.split(os.path.sep)[-1] + ".nix"
    nix_file = nix.File.open(os.path.join(dataset, base), nix.FileMode.ReadOnly)
    b = nix_file.blocks[0]
    if 'BaselineActivity_1' in b.tags:
        t = b.tags["BaselineActivity_1"]
    elif "BaselineActivity_2" in b.tags:
        t = b.tags["BaselineActivity_2"]
    else:
        f.close()
        return [],[]
    spikes_da = b.data_arrays["Spikes-1"]
    spike_times = spikes_da[:spikes_da.shape[0]-5000]
    baseline_spikes = spike_times[(spike_times > t.position[0]) & (spike_times < (t.position[0] + t.extent[0]))]
    nix_file.close()
    return baseline_spikes
    

if __name__ == "__main__":
    data_dir = "../data"
    dataset = "2018-11-09-ad-invivo-1"
    time, eod = read_baseline_eod(os.path.join(data_dir, dataset))
    spike_times = read_baseline_spikes(os.path.join(data_dir, dataset))