Example #1
0
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)