Exemplo n.º 1
0
class PointMutationTests(TestCase):
    
    def setUp(self):

        self.mutation = PointMutation(42,'W','G')
        self.amino_acid_codes = dict([('GLY','G'),('ALA','A'),('LEU','L'),\
            ('MET','M'),('PHE','F'),('TRP','W'),('LYS','K'),('GLN','Q'),\
            ('GLU','E'),('SER','S'),('PRO','P'),('VAL','V'),('ILE','I'),\
            ('CYS','C'),('TYR','Y'),('HIS','H'),('ARG','R'),('ASN','N'),\
            ('ASP','D'),('THR','T'),('GLYCINE','G'),('ALANINE','A'),\
            ('XAA','X'),('GLX','Z'),('ASX','B'),\
            ('LEUCINE','L'),('METHIONINE','M'),('PHENYLALANINE','F'),\
            ('VALINE','V'),('ISOLEUCINE','I'),('TYROSINE','Y'),\
            ('TRYPTOPHAN','W'),('SERINE','S'),('PROLINE','P'),\
            ('THREONINE','T'),('CYSTEINE','C'),('ASPARAGINE','N'),\
            ('GLUTAMINE','Q'),('LYSINE','K'),('HISTIDINE','H'),\
            ('ARGININE','R'),('ASPARTATE','D'),('GLUTAMATE','E'),\
            ('ASPARTIC ACID','D'),('GLUTAMIC ACID','E'),\
            ('G','G'),('A','A'),('V','V'),('L','L'),('I','I'),('M','M'),\
            ('F','F'),('Y','Y'),('W','W'),('S','S'),('P','P'),('T','T'),\
            ('C','C'),('N','N'),('Q','Q'),('K','K'),('H','H'),('R','R'),\
            ('D','D'),('E','E')]) 

    def test_valid_init(self):
        """PointMutation: __init__ functions as expected (valid data)"""
        m = PointMutation(42,'A','C')
        self.assertEqual(m.Position,42)
        self.assertEqual(m.WtResidue,'A')
        self.assertEqual(m.MutResidue,'C') 
        
        m = PointMutation(42,'Ala','Cys')
        self.assertEqual(m.Position,42)
        self.assertEqual(m.WtResidue,'A')
        self.assertEqual(m.MutResidue,'C') 
        
        m = PointMutation(42,'ALA','CYS')
        self.assertEqual(m.Position,42)
        self.assertEqual(m.WtResidue,'A')
        self.assertEqual(m.MutResidue,'C') 
        
        m = PointMutation(42,'A','Cys')
        self.assertEqual(m.Position,42)
        self.assertEqual(m.WtResidue,'A')
        self.assertEqual(m.MutResidue,'C') 
        
        m = PointMutation('42','A','C')
        self.assertEqual(m.Position,42)
        self.assertEqual(m.WtResidue,'A')
        self.assertEqual(m.MutResidue,'C') 

    def test_hash(self):
        """PointMutation: hash functions as expected """
        self.assertEqual(hash(self.mutation), \
            hash(str(type(self.mutation)) + 'W42G'))

    def test_invalid_init(self):
        """PointMutation: __init__ functions as expected (invalid data)"""
        self.assertRaises(MutationError,PointMutation,'hello','A','C')
        self.assertRaises(MutationError,PointMutation,42,'O','C')
        self.assertRaises(MutationError,PointMutation,0,'A','C')
        self.assertRaises(MutationError,PointMutation,-42,'A','C')
        self.assertRaises(MutationError,PointMutation,42,'A','O')
        self.assertRaises(MutationError,PointMutation,42,'A','5')

    def test_str(self):
        """PointMutation: __str__ functions as expected """
        self.assertEqual(str(self.mutation),'W42G')

    def test_eq(self):
        """PointMutation: == functions as expected """
        self.assertEqual(self.mutation == PointMutation(42,'W','G'), True)
        self.assertEqual(self.mutation == PointMutation('42','W','G'), True)
        self.assertEqual(self.mutation == PointMutation(41,'W','G'), False)
        self.assertEqual(self.mutation == PointMutation(42,'Y','G'), False)
        self.assertEqual(self.mutation == PointMutation(42,'W','C'), False)
        
    def test_ne(self):
        """PointMutation: != functions as expected """
        self.assertEqual(self.mutation != PointMutation(42,'W','G'), False)
        self.assertEqual(self.mutation != PointMutation('42','W','G'), False)
        self.assertEqual(self.mutation != PointMutation(41,'W','G'), True)
        self.assertEqual(self.mutation != PointMutation(42,'Y','G'), True)
        self.assertEqual(self.mutation != PointMutation(42,'W','C'), True)

    def test_normalize_residue_identity(self):
        """PointMutation: normalize functions with valid input
        """ 
        # test normalizations from one-letter, three-letter, and full name
        # amino acid mentions to their one-letter codes
        # NOTE: the abbreviated and unabbreviated forms were manually entered
        # twice -- once in the mutation_finder.py file, and once in this
        # test file -- to test for errors which may have occurred during data
        # entry
        for test_input,expected_output in self.amino_acid_codes.items():
            self.assertEqual(self.mutation._normalize_residue_identity(\
                test_input),expected_output)
            # check for case-insensitivity
            self.assertEqual(self.mutation._normalize_residue_identity(\
                test_input.lower()),expected_output)

    def test_normalize_residue_identity_error_handling(self):
        """PointMutation: normalize functions with invalid input """
        # Try some bad values
        for test_input in ['','O','xxala','alaxx','asdasd','42']:
            self.assertRaises(MutationError,\
              self.mutation._normalize_residue_identity,test_input)
        # Try some bad types
        for test_input in [{},[],42,0.42]:
            self.assertRaises(MutationError,\
              self.mutation._normalize_residue_identity,test_input)
Exemplo n.º 2
0
class PointMutationTests(TestCase):
    def setUp(self):

        self.mutation = PointMutation(42, "W", "G")
        self.amino_acid_codes = dict(
            [
                ("GLY", "G"),
                ("ALA", "A"),
                ("LEU", "L"),
                ("MET", "M"),
                ("PHE", "F"),
                ("TRP", "W"),
                ("LYS", "K"),
                ("GLN", "Q"),
                ("GLU", "E"),
                ("SER", "S"),
                ("PRO", "P"),
                ("VAL", "V"),
                ("ILE", "I"),
                ("CYS", "C"),
                ("TYR", "Y"),
                ("HIS", "H"),
                ("ARG", "R"),
                ("ASN", "N"),
                ("ASP", "D"),
                ("THR", "T"),
                ("GLYCINE", "G"),
                ("ALANINE", "A"),
                ("XAA", "X"),
                ("GLX", "Z"),
                ("ASX", "B"),
                ("LEUCINE", "L"),
                ("METHIONINE", "M"),
                ("PHENYLALANINE", "F"),
                ("VALINE", "V"),
                ("ISOLEUCINE", "I"),
                ("TYROSINE", "Y"),
                ("TRYPTOPHAN", "W"),
                ("SERINE", "S"),
                ("PROLINE", "P"),
                ("THREONINE", "T"),
                ("CYSTEINE", "C"),
                ("ASPARAGINE", "N"),
                ("GLUTAMINE", "Q"),
                ("LYSINE", "K"),
                ("HISTIDINE", "H"),
                ("ARGININE", "R"),
                ("ASPARTATE", "D"),
                ("GLUTAMATE", "E"),
                ("ASPARTIC ACID", "D"),
                ("GLUTAMIC ACID", "E"),
                ("G", "G"),
                ("A", "A"),
                ("V", "V"),
                ("L", "L"),
                ("I", "I"),
                ("M", "M"),
                ("F", "F"),
                ("Y", "Y"),
                ("W", "W"),
                ("S", "S"),
                ("P", "P"),
                ("T", "T"),
                ("C", "C"),
                ("N", "N"),
                ("Q", "Q"),
                ("K", "K"),
                ("H", "H"),
                ("R", "R"),
                ("D", "D"),
                ("E", "E"),
            ]
        )

    def test_valid_init(self):
        """PointMutation: __init__ functions as expected (valid data)"""
        m = PointMutation(42, "A", "C")
        self.assertEqual(m.Position, 42)
        self.assertEqual(m.WtResidue, "A")
        self.assertEqual(m.MutResidue, "C")

        m = PointMutation(42, "Ala", "Cys")
        self.assertEqual(m.Position, 42)
        self.assertEqual(m.WtResidue, "A")
        self.assertEqual(m.MutResidue, "C")

        m = PointMutation(42, "ALA", "CYS")
        self.assertEqual(m.Position, 42)
        self.assertEqual(m.WtResidue, "A")
        self.assertEqual(m.MutResidue, "C")

        m = PointMutation(42, "A", "Cys")
        self.assertEqual(m.Position, 42)
        self.assertEqual(m.WtResidue, "A")
        self.assertEqual(m.MutResidue, "C")

        m = PointMutation("42", "A", "C")
        self.assertEqual(m.Position, 42)
        self.assertEqual(m.WtResidue, "A")
        self.assertEqual(m.MutResidue, "C")

    def test_hash(self):
        """PointMutation: hash functions as expected """
        self.assertEqual(hash(self.mutation), hash(str(type(self.mutation)) + "W42G"))

    def test_invalid_init(self):
        """PointMutation: __init__ functions as expected (invalid data)"""
        self.assertRaises(MutationError, PointMutation, "hello", "A", "C")
        self.assertRaises(MutationError, PointMutation, 42, "O", "C")
        self.assertRaises(MutationError, PointMutation, 0, "A", "C")
        self.assertRaises(MutationError, PointMutation, -42, "A", "C")
        self.assertRaises(MutationError, PointMutation, 42, "A", "O")
        self.assertRaises(MutationError, PointMutation, 42, "A", "5")

    def test_str(self):
        """PointMutation: __str__ functions as expected """
        self.assertEqual(str(self.mutation), "W42G")

    def test_eq(self):
        """PointMutation: == functions as expected """
        self.assertEqual(self.mutation == PointMutation(42, "W", "G"), True)
        self.assertEqual(self.mutation == PointMutation("42", "W", "G"), True)
        self.assertEqual(self.mutation == PointMutation(41, "W", "G"), False)
        self.assertEqual(self.mutation == PointMutation(42, "Y", "G"), False)
        self.assertEqual(self.mutation == PointMutation(42, "W", "C"), False)

    def test_ne(self):
        """PointMutation: != functions as expected """
        self.assertEqual(self.mutation != PointMutation(42, "W", "G"), False)
        self.assertEqual(self.mutation != PointMutation("42", "W", "G"), False)
        self.assertEqual(self.mutation != PointMutation(41, "W", "G"), True)
        self.assertEqual(self.mutation != PointMutation(42, "Y", "G"), True)
        self.assertEqual(self.mutation != PointMutation(42, "W", "C"), True)

    def test_normalize_residue_identity(self):
        """PointMutation: normalize functions with valid input
        """
        # test normalizations from one-letter, three-letter, and full name
        # amino acid mentions to their one-letter codes
        # NOTE: the abbreviated and unabbreviated forms were manually entered
        # twice -- once in the mutation_finder.py file, and once in this
        # test file -- to test for errors which may have occurred during data
        # entry
        for test_input, expected_output in self.amino_acid_codes.items():
            self.assertEqual(self.mutation._normalize_residue_identity(test_input), expected_output)
            # check for case-insensitivity
            self.assertEqual(self.mutation._normalize_residue_identity(test_input.lower()), expected_output)

    def test_normalize_residue_identity_error_handling(self):
        """PointMutation: normalize functions with invalid input """
        # Try some bad values
        for test_input in ["", "O", "xxala", "alaxx", "asdasd", "42"]:
            self.assertRaises(MutationError, self.mutation._normalize_residue_identity, test_input)
        # Try some bad types
        for test_input in [{}, [], 42, 0.42]:
            self.assertRaises(MutationError, self.mutation._normalize_residue_identity, test_input)