def __find_original_positions_in_aligned_sequences( self, solution: MSASolution, column_positions_in_first_parent: list): positions = [-1 for _ in range(solution.number_of_variables)] for i in range(solution.number_of_variables): pos = column_positions_in_first_parent[i] positions[ i] = solution.get_original_char_position_in_aligned_sequence( i, pos) return positions
def test_should_get_original_char_position_in_aligned_sequence(self): # setup problem = MSA(score_list=[]) problem.identifiers = ['seq1', 'seq2', 'seq3'] problem.number_of_variables = 3 msa = MSASolution(problem, msa=[('seq1', '-ABC'), ('seq2', 'ABCD'), ('seq3', '--AB')]) # check self.assertEqual( 1, msa.get_original_char_position_in_aligned_sequence(seq_index=0, position=0)) self.assertEqual( 2, msa.get_original_char_position_in_aligned_sequence(seq_index=0, position=1)) self.assertEqual( 3, msa.get_original_char_position_in_aligned_sequence(seq_index=0, position=2)) self.assertEqual( 0, msa.get_original_char_position_in_aligned_sequence(seq_index=1, position=0)) self.assertEqual( 1, msa.get_original_char_position_in_aligned_sequence(seq_index=1, position=1)) self.assertEqual( 2, msa.get_original_char_position_in_aligned_sequence(seq_index=1, position=2)) self.assertEqual( 2, msa.get_original_char_position_in_aligned_sequence(seq_index=2, position=0)) self.assertEqual( 3, msa.get_original_char_position_in_aligned_sequence(seq_index=2, position=1))