Пример #1
0
def getBigramMaxesAndMins(bigrams):
    def ni(x):
        return x[x != float("-Inf")]

    maxes = Object()
    maxes.fullLength = np.max([np.max(ni(b.fullLength)) for b in bigrams])
    maxes.gap = np.max([np.max(ni(b.gap)) for b in bigrams])
    maxes.startStart = np.max([np.max(ni(b.startStart)) for b in bigrams])

    mins = Object()
    mins.fullLength = np.min([np.min(ni(b.fullLength)) for b in bigrams])
    mins.gap = np.min([np.min(ni(b.gap)) for b in bigrams])
    mins.startStart = np.min([np.min(ni(b.startStart)) for b in bigrams])

    return (maxes, mins)
Пример #2
0
def compileBigramModel(data):
    COUNT_CUTOFF = 5
    TIME_CUTOFF = 5
    bigramModel = data.bigramModel
    keycodes = sorted(list(KEYCODES.values()))
    keyToIndex = dict((v, k) for (k, v) in enumerate(keycodes))
    fullLength = np.zeros([len(keycodes)] * 2) + float("-Inf")
    gap = np.zeros([len(keycodes)] * 2) + float("-Inf")
    startStart = np.zeros([len(keycodes)] * 2) + float("-Inf")
    for (k, v) in bigramModel.iteritems():
        for (m, n) in v.iteritems():
            (fl, g, ss) = zip(*n)
            if len(fl) >= COUNT_CUTOFF and abs(np.mean(fl)) < TIME_CUTOFF:
                fullLength[keyToIndex[k], keyToIndex[m]] = np.mean(fl)
            if len(g) >= COUNT_CUTOFF and abs(np.mean(g)) < TIME_CUTOFF:
                gap[keyToIndex[k], keyToIndex[m]] = np.mean(g)
            if len(ss) >= COUNT_CUTOFF and abs(np.mean(ss)) < TIME_CUTOFF:
                startStart[keyToIndex[k], keyToIndex[m]] = np.mean(ss)

    bigram = Object()
    bigram.fullLength = fullLength
    bigram.gap = gap
    bigram.startStart = startStart
    return bigram