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