def _get_alignment_result(self, fkp, row, col, reference, output):
        """
        we are trying to get all alignment result by the fkp, from the cell where row and col point us, to the
        end where the first cell. Don't get confused by the row and col.

        :param fkp: (f(k,p)array from the ukk, a two dimensional array having
        max_k rows whose indices correspond to d(i,j) array diagonal numbers and max_p columns whose indices range
        from -1 to the largest possible d(i,j) array cell value.)
        :param row: we should start getting alignment by this row. (the row is in the col)
        :param col: we should start getting alignment by this row. (the col is in the row)
        :param reference: reference string
        :param output: output string
        :return: alignment_result
        """

        alignment_result = AlignmentResult()
        count_for_output = 0
        reach_first_cell = False
        while not reach_first_cell:
            # we will only stop when it is first cell
            reach_first_cell, row, col, count_for_output = self._get_me_the_result_by_looping_through_each_col(
                fkp, row, col, count_for_output, reference, output,
                alignment_result)

        alignment_result.merge_none_tokens()
        return alignment_result
Пример #2
0
 def test_5(self):
     """
     """
     result = self.calculator.get_distance('AVERY', 'GARVEY')
     self.assertEqual(result.distance, 3)
     expected_alignment_result = AlignmentResult()
     expected_alignment_result.add_token(ref_token="A",
                                         output_tokens=["G", "A", "R"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="V",
                                         output_tokens=["V"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="E",
                                         output_tokens=["E"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="R",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="Y",
                                         output_tokens=["Y"],
                                         add_to_left=False)
     expected_alignment_result.merge_none_tokens()
     print(result.alignment_result)
     print(expected_alignment_result)
     self.assertEqual(result.alignment_result, expected_alignment_result)
Пример #3
0
 def test_3(self):
     """
     """
     result = self.calculator.get_distance('batman', 'b')
     self.assertEqual(result.distance, 5)
     expected_alignment_result = AlignmentResult()
     expected_alignment_result.add_token(ref_token="b",
                                         output_tokens=["b"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="a",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="t",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="m",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="a",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="n",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.merge_none_tokens()
     print(result.alignment_result)
     print(expected_alignment_result)
     self.assertEqual(result.alignment_result, expected_alignment_result)
Пример #4
0
 def test_7(self):
     """
     """
     result = self.calculator.get_distance('werewolf', 'were  wolf')
     self.assertEqual(result.distance, 2)
     expected_alignment_result = AlignmentResult()
     expected_alignment_result.add_token(ref_token="w",
                                         output_tokens=["w"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="e",
                                         output_tokens=["e"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="r",
                                         output_tokens=["r"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="e",
                                         output_tokens=["e", " ", " "],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="w",
                                         output_tokens=["w"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="o",
                                         output_tokens=["o"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="l",
                                         output_tokens=["l"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="f",
                                         output_tokens=["f"],
                                         add_to_left=False)
     expected_alignment_result.merge_none_tokens()
     print(result.alignment_result)
     print(expected_alignment_result)
     self.assertEqual(result.alignment_result, expected_alignment_result)
Пример #5
0
 def test_6(self):
     """
     """
     result = self.calculator.get_distance('ernest', 'nester')
     self.assertEqual(result.distance, 4)
     expected_alignment_result = AlignmentResult()
     expected_alignment_result.add_token(ref_token="e",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="r",
                                         output_tokens=[],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="n",
                                         output_tokens=["n"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="e",
                                         output_tokens=["e"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="s",
                                         output_tokens=["s"],
                                         add_to_left=False)
     expected_alignment_result.add_token(ref_token="t",
                                         output_tokens=["t", "e", "r"],
                                         add_to_left=False)
     expected_alignment_result.merge_none_tokens()
     print(result.alignment_result)
     print(expected_alignment_result)
     self.assertEqual(result.alignment_result, expected_alignment_result)
Пример #6
0
                           output_tokens=["some", "day"],
                           add_to_left=False)
alignment_result.add_token(ref_token="one",
                           output_tokens=["one"],
                           add_to_left=False)
# alignment_result.add_token(ref_token="one", output_tokens=["one", "two", "three"], add_to_left=False)
# alignment_result.add_token(ref_token="and", output_tokens=["in", "and", "some"], add_to_left=False)
# alignment_result.add_token(ref_token="someday", output_tokens=["days"], add_to_left=False)
alignment_result.add_token(ref_token="one",
                           output_tokens=["la", "two", "three"],
                           add_to_left=False)
# alignment_result.add_token(ref_token="someday", output_tokens=["xi"], add_to_left=False)
alignment_result.add_token(ref_token="someday",
                           output_tokens=["ays"],
                           add_to_left=False)
alignment_result.merge_none_tokens()
print('alignment_result', alignment_result)
print('!!!!!!!!!!!!!!')

#  get each rows
#  match?
#  not --> check which one
# incorrect -
correct_count = 0
delete_count = 0
incorrect = 0
split_error = 0
total_count = len(alignment_result)
for rows in alignment_result:
    total_count += 1
    if len(rows.outputs) == 1: