Esempio n. 1
0
 def test_get_odd_count(self):
     dists = [
         OuterDistance(10, 11, 1),
         OuterDistance(10, 11, 4),
         OuterDistance(12, 11, 2),
         OuterDistance(12, 11, 4),
         OuterDistance(1, 2, 2),
     ]
     self.assertEqual(3, len(get_outer_distance_standard_deviation(dists)))
Esempio n. 2
0
 def test_get_a_o_d_count(self):
     dists = [
         OuterDistance(10, 11, 2),
         OuterDistance(10, 11, 4),
         OuterDistance(12, 11, 2),
         OuterDistance(12, 11, 4),
         OuterDistance(1, 2, 2),
     ]
     self.assertEqual(3 , len(get_average_outer_distance(dists)))
Esempio n. 3
0
 def test_get_dist(self):
     inputs = [
         Input(10, 1, 3),
         Input(11, 2, 4),
         Input(12, 6, 8)
     ]
     self.assertEqual(
         get_outer_distance_sequence(inputs),
         [
             OuterDistance(10, 11, -1),
             OuterDistance(11, 12, 2)
         ]
     )
Esempio n. 4
0
 def test_get_odsd(self):
     dists = [
         OuterDistance(10, 11, 1),
         OuterDistance(10, 11, 4),
         OuterDistance(12, 11, 2),
         OuterDistance(12, 11, 4),
         OuterDistance(1, 2, 2),
     ]
     for odsd in get_outer_distance_standard_deviation(dists):
         self.assertIn(odsd,
                       [
                           OuterDistance(10,11, math.sqrt((1.5**2 + 1.5**2) / 2.0)),
                           OuterDistance(12,11, 1),
                           OuterDistance(1,2, 0)
                       ]
                       )
Esempio n. 5
0
 def test_get_odd(self):
     dists = [
         OuterDistance(10, 11, 1),
         OuterDistance(10, 11, 4),
         OuterDistance(12, 11, 2),
         OuterDistance(12, 11, 4),
         OuterDistance(1, 2, 2),
     ]
     for odd in get_outer_distance_dispersion(dists):
         self.assertIn(odd,
             [
                 OuterDistance(10,11, (1.5**2 + 1.5**2) / 2.0),
                 OuterDistance(12,11, 1),
                 OuterDistance(1,2, 0)
             ]
         )
Esempio n. 6
0
def get_outer_distance_sequence(input_sequence):
    dist_seq = list()

    i = 1
    while i < len(input_sequence):
        if input_sequence[i].key_press_time - input_sequence[
                i - 1].key_release_time < MAX_PAUSE:
            dist_seq.append(
                OuterDistance(
                    input_sequence[i - 1].key_code, input_sequence[i].key_code,
                    input_sequence[i].key_press_time -
                    input_sequence[i - 1].key_release_time))
        i += 1
    return dist_seq
Esempio n. 7
0
 def test_get_a(self):
     dists = [
         OuterDistance(10, 11, 2),
         OuterDistance(10, 11, 4),
         OuterDistance(12, 11, 2),
         OuterDistance(12, 11, 4),
         OuterDistance(1, 2, 2),
     ]
     for item in get_average_outer_distance(dists):
         self.assertIn(
             item,
             [
                 OuterDistance(10,11,3),
                 OuterDistance(12,11,3),
                 OuterDistance(1,2,2)
             ]
         )
Esempio n. 8
0
def get_average_outer_distance(outer_distance_sequence):
    dictionary = dict()
    for distance in outer_distance_sequence:  #TODO избавиться от словаря с адовыми кортежами вместо ключей
        if (distance.key_code_from, distance.key_code_to) in dictionary.keys():
            dictionary[(distance.key_code_from,
                        distance.key_code_to)][0] += distance.distance
            dictionary[(distance.key_code_from, distance.key_code_to)][1] += 1
        else:
            dictionary[(distance.key_code_from,
                        distance.key_code_to)] = [distance.distance, 1]
    result = list()
    for key in dictionary.keys():
        result.append(
            OuterDistance(key[0], key[1],
                          dictionary[key][0] / float(dictionary[key][1])))
    return result
Esempio n. 9
0
def get_outer_distance_dispersion(outer_distance_sequence):
    average_distance = get_average_outer_distance(outer_distance_sequence)
    result = list()

    for ad in average_distance:
        i = 0
        current_value = 0
        current_count = 0
        while i < len(outer_distance_sequence):
            if outer_distance_sequence[
                    i].key_code_from == ad.key_code_from and outer_distance_sequence[
                        i].key_code_to == ad.key_code_to:
                current_value += (outer_distance_sequence[i].distance -
                                  ad.distance)**2
                current_count += 1
            i += 1
        result.append(
            OuterDistance(ad.key_code_from, ad.key_code_to,
                          current_value / float(current_count)))
    return result