Convert binary time series stream to event dataframe - selmling/Analytics-and-Data-Exploration GitHub Wiki

imports first

import pandas as pd
import numpy as np
import glob

define function

def stream2event(sr,ss,path):
    nm_const = "final_sec.csv"
    for fname in glob.glob(path,recursive=True):
        dat = pd.read_csv(fname, header=None).T
        output = pd.DataFrame()
        onsets = pd.DataFrame()
        offsets = pd.DataFrame()
        stamps = dat[0].diff()[lambda x: x != 0].index.tolist()    # detect when change in two consecutive frames
        onsets = onsets.append(stamps[::2],ignore_index=True)      # take even index elements
        offsets = offsets.append(stamps[1::2],ignore_index=True)   # take odd index elements
        output["onset"] = onsets[0]
        output["offset"] = offsets[0]
        output = (output*ss)/sr
        output.to_csv("{}{}".format(fname,nm_const), header = False, index=False, sep='\t')

define function inputs

sr = 48000
ss = 40
path = "../segment_csvs/**/*.csv"

call function to generate csv files

stream2event(sr,ss,path)