def test_mutation_site_different_positions(self): mutation1 = parse_codon_mutation("A51F") mutation2 = parse_codon_mutation("A52M") lst = [mutation1, mutation2] with self.assertRaises(ValueError) as context: mut_site = MutationSite(lst) self.assertTrue("must be on same position" in str(context.exception))
def test_mutation_site_diff_original_aminos(self): mutation1 = parse_codon_mutation("A51F") mutation2 = parse_codon_mutation("M51M") lst = [mutation1, mutation2] with self.assertRaises(ValueError) as context: mut_site = MutationSite(lst) self.assertTrue("must have same amin" in str(context.exception))
def test_get_mutation_string(self): mutation1 = parse_codon_mutation("A51F") mutation2 = parse_codon_mutation("A51M") lst = [mutation1, mutation2] mut_site = MutationSite(lst) self.assertEqual("A51A", mut_site.get_mutation_string("A")) self.assertEqual("A51F", mut_site.get_mutation_string("F")) self.assertEqual("A51M", mut_site.get_mutation_string("M"))
def test_valid_mutation_site(self): mutation1 = parse_codon_mutation("A51F") mutation2 = parse_codon_mutation("A51M") lst = [mutation1, mutation2] mut_site = MutationSite(lst) self.assertEqual(150, mut_site.position) self.assertEqual("A", mut_site.old_amino) self.assertIn("F", mut_site.new_aminos) self.assertIn("M", mut_site.new_aminos)
def test_parse_invalid_position(self): with self.assertRaises(ValueError) as context: mutation = parse_codon_mutation("A*F") self.assertTrue("Position" in str(context.exception)) with self.assertRaises(ValueError) as context: mutation = parse_codon_mutation("A0F") self.assertTrue("Position" in str(context.exception)) with self.assertRaises(ValueError) as context: mutation = parse_codon_mutation("A-12F") self.assertTrue("positive number" in str(context.exception))
def parse_mutations(self, goi_offset: int) -> List[MutationSite]: """ Parses the user input in the format "E32W E32L E49K" and produces multi-amino mutations in the format of "E32WL E49K" """ codon_muts = [parse_codon_mutation(mutation, goi_offset) for mutation in self.mutations] return create_multi_amino_mutations(codon_muts)
def parse_mutations(self, goi_offset): return [ parse_codon_mutation(mutation, goi_offset) for mutation in self.mutations ]
def test_parse_invalid_new_amino(self): with self.assertRaises(ValueError) as context: mutation = parse_codon_mutation("A51*") self.assertTrue( "Target amino acid is not valid" in str(context.exception))
def test_parse_invalid_orig_amino(self): with self.assertRaises(ValueError) as context: mutation = parse_codon_mutation("*51F") self.assertTrue( "Original amino acid is not valid" in str(context.exception))
def test_parse_valid_mut(self): mutation = parse_codon_mutation("A51F") self.assertEqual("A51F", mutation.original_string) self.assertEqual("A", mutation.old_amino) self.assertEqual("F", mutation.new_amino) self.assertEqual(150, mutation.position)