def test_aminoAcids(self): """CodonUsage aminoAcids should correctly count amino acids""" freqs = {'UUC':5, 'AUA':10, 'AUG':10, 'CGC':3, 'AGG':2, 'XYZ':8, 'UAA':2, 'UGA':1} u = CodonUsage(freqs, "test") self.assertEqual(u.Info, 'test') for key, val in u.items(): if key in freqs: self.assertEqual(val, freqs[key]) else: self.assertEqual(val, 0) aa = u.aminoAcids() self.assertEqual(aa, AminoAcidUsage({'F':5,'I':10,'M':10,'R':5,'*':3,'X':8})) #check that it works with a different genetic code u.GeneticCode = GeneticCodes['2'] aa = u.aminoAcids() self.assertEqual(aa, AminoAcidUsage({'F':5,'I':0,'M':20,'R':3,'*':4,'W':1,'X':8})) #check that it works if a genetic code is supplied explicitly u.GeneticCode = GeneticCodes[1] aa = u.aminoAcids() self.assertEqual(aa, AminoAcidUsage({'F':5,'I':10,'M':10,'R':5,'*':3,'X':8})) aa_2 = u.aminoAcids(2) self.assertEqual(aa_2, AminoAcidUsage({'F':5,'I':0,'M':20,'R':3,'*':4,'W':1,'X':8})) #check that we held onto the info object through the above self.assertEqual(aa_2.Info, 'test')
def test_positionalBases(self): """CodonUsage bases should count bases at each position correctly""" freqs = {'UUC':5, 'AUA':10, 'AUG':10, 'CGC':3, 'AGG':2, 'XYZ':8, 'UAA':2, 'UGA':1} u = CodonUsage(freqs) b = u.positionalBases() assert isinstance(b, PositionalBaseUsage) first, second, third = b self.assertEqual(first, BaseUsage({'U':8,'C':3,'A':22,'X':8})) self.assertEqual(second, BaseUsage({'U':25,'C':0,'A':2,'G':6,'Y':8})) self.assertEqual(third, BaseUsage({'C':8,'A':13,'G':12,'Z':8})) #check that it also works when we purge p = u.positionalBases(purge_unwanted=True) first, second, third = p self.assertEqual(first, BaseUsage({'U':5,'C':3,'A':2})) self.assertEqual(second, BaseUsage({'U':5,'G':5})) self.assertEqual(third, BaseUsage({'C':8,'G':2})) #check that it also works with a different genetic code, and, #incidentally, that the purging didn't affect the original object u.GeneticCode = GeneticCodes[2] #mt code: different stop codons p = u.positionalBases(purge_unwanted=True) first, second, third = p self.assertEqual(first, BaseUsage({'U':6,'C':3,'A':20})) self.assertEqual(second, BaseUsage({'U':25,'G':4})) self.assertEqual(third, BaseUsage({'C':8,'A':11,'G':10}))