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
Example #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)
Example #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)
Example #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)
Example #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)
Example #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: