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)