def doRambamAlgo(time, values, numOfClusters, disFactor=0.2): atoms = [ [14, 15, 17, 19, 24, 28, 33, 33, 33, 33], [33, 33, 33, 33, 28, 24, 19, 17, 15, 14], [15, 14, 12, 12, 14, 15, 16, 17.5, 17.5, 17.5], [17.5, 17.5, 16, 15, 14, 13, 12, 12, 14, 15] ] minimalCluster = len(atoms[0]) fracs = ke.clusterByTime(time, values, False, minimalCluster) #originalFracs = copy.deepcopy(fracs) prob = 0.05 fracs = ke.filterOutliers(fracs, False, prob) i=0 parts, kuku = ke.cleanFracs(fracs, False) vecs, mats = createClustersAndMatchingMatrices(parts, atoms, numOfClusters, disFactor) strides = createStridesFromAtoms(mats, vecs) if(numOfClusters > 2): whole = orderWithCost(strides) xlabel = 'Frames(each frame is 33 miliseconds)' ylabel = 'Right knee angle (in degrees)' st.plotParts(strides, xlabel, ylabel, xrange(len(strides))) else: if(numOfClusters == 2) : byOrderDis = getDistanceBetweenAtoms(strides[0], strides[1]) byOrder = appendAtom(strides[0], strides[1]) inverseDis = getDistanceBetweenAtoms(strides[1], strides[0]) inverse = appendAtom(strides[1], strides[0]) whole = byOrder if byOrderDis < inverseDis else inverse else: whole = strides[0] return whole
def plotStas(periods, title): st.plotParts(periods) vec = [len(period) for period in periods] plt.figure() mean = np.mean(vec) std = np.std(vec) skew =stats.skew(vec) ku = stats.kurtosis(vec) plt.title(title +' mean: '+ str(mean)+' std: '+str(std)+' skew: '+str(skew)+' kurtosis: '+str(ku)) plt.scatter(range(len(vec)), vec) plt.figure() plt.hist(vec)