Exemplo n.º 1
0
def dtwWrapper(data, rows, columns, k):
    '''
    wrapper function for dynamic time warping.
    includes use of exponential adaptive tuning function
    with temporal correlation if k > 0
    '''

    # not explicitly called, but needs to be in R environment
    DTW = importr("dtw")

    # create a data frame of zeros of size number of ids x number of ids
    # fill it with the calculated distance metric for each pair wise comparison

    df_ = pd.DataFrame(index=rows, columns=columns)
    df_ = df_.fillna(0.0).astype(np.float64)

    # fill the array with dtw-distance values
    pandas2ri.activate()

    for i in rows:
        E.info("DTW %s" % i)
        for j in columns:
            series1 = data.loc[i].values.tolist()
            series2 = data.loc[j].values.tolist()
            DTW_value = (R.dtw(series1, series2)).rx('distance')[0][0]
            cort_value = temporalCorrelate(series1, series2)
            tuned_value = adaptiveTune(cort_value, k)
            time_dist = DTW_value * tuned_value
            df_.loc[i][j] = float(time_dist)
            df_[j][i] = float(time_dist)

    return df_
Exemplo n.º 2
0
def dtwWrapper(data, rows, columns, k):
    '''
    wrapper function for dynamic time warping.
    includes use of exponential adaptive tuning function
    with temporal correlation if k > 0
    '''

    # not explicitly called, but needs to be in R environment
    DTW = importr("dtw")

    # create a data frame of zeros of size number of ids x number of ids
    # fill it with the calculated distance metric for each pair wise comparison

    df_ = pd.DataFrame(index=rows,
                       columns=columns)
    df_ = df_.fillna(0.0).astype(np.float64)

    # fill the array with dtw-distance values
    pandas2ri.activate()

    for i in rows:
        E.info("DTW %s" % i)
        for j in columns:
            series1 = data.loc[i].values.tolist()
            series2 = data.loc[j].values.tolist()
            DTW_value = (R.dtw(series1,
                               series2)).rx('distance')[0][0]
            cort_value = temporalCorrelate(series1, series2)
            tuned_value = adaptiveTune(cort_value, k)
            time_dist = DTW_value * tuned_value
            df_.loc[i][j] = float(time_dist)
            df_[j][i] = float(time_dist)

    return df_
Exemplo n.º 3
0
 def dtw_wrapper(data, i, j):
     series1 = data.loc[i].tolist()
     series2 = data.loc[j].tolist()
     DTW_value = (R.dtw(series1, series2)).rx('distance')[0][0]
     cort_value = CORT(series1, series2)
     tuned_value = adaptiveTune(cort_value, k=int(options.k))
     time_dist = DTW_value * tuned_value
     df_[i][j] = float(time_dist)
     df_[j][i] = float(time_dist)
Exemplo n.º 4
0
def segmentationPoints(X, xIsFilename=False, windowSize=100, smoothing='blackman'):
	if xIsFilename == True:
		with open(X,'r') as fin:
			X = np.loadtxt(fin,delimiter=",")
	

	smoothX = sm.smooth(X,window_len=windowSize,window=smoothing)
	#(unsmoothedMins,unsmoothedMaxs) = mm.find_mins_and_maxs1D(X)
	(smoothedMins,smoothedMaxs) = mm.find_mins_and_maxs1D(smoothX)
	# Using Dynamic Time Warping to map the smoothed curve onto the original, noisy curve.
	alignmentOfSmoothedCurveAndOriginal = r.dtw(smoothX, X)
	warpIndexes=r.warp(alignmentOfSmoothedCurveAndOriginal,True)
	#pl.plot(warpIndexes,smoothX)
	#pl.plot(X)
	#pl.show()

	minsMappedToOriginal = sorted(list(set([warpIndexes[smoothedMins[i]] for i in range(len(smoothedMins))])))
	maxsMappedToOriginal = sorted(list(set([warpIndexes[smoothedMaxs[i]] for i in range(len(smoothedMaxs))])))

	#minsMappedToOriginal = mapToOriginalRecursive(X,smoothedMins,unsmoothedMins,"mins")
	#maxsMappedToOriginal = mapToOriginalRecursive(X,smoothedMaxs,unsmoothedMaxs,"maxs")

	return (minsMappedToOriginal,maxsMappedToOriginal)