def test_complement(self): """Alphabet complement should correctly complement sequence""" self.assertEqual(RnaAlphabet.complement('UauCG-NR'), 'AuaGC-NY') self.assertEqual(DnaAlphabet.complement('TatCG-NR'), 'AtaGC-NY') self.assertEqual(RnaAlphabet.complement(''), '') self.assertRaises(TypeError, ProteinAlphabet.complement, 'ACD') #if it wasn't a string, result should be a list self.assertEqual(RnaAlphabet.complement(list('UauCG-NR')), list('AuaGC-NY')) self.assertEqual(RnaAlphabet.complement(('a','c')), ('u','g')) #constructor should fail for a dict self.assertRaises(ValueError, RnaAlphabet.complement, {'a':'c'})
def test_rc(self): """Alphabet rc should correctly reverse-complement sequence""" self.assertEqual(RnaAlphabet.rc('UauCG-NR'), 'YN-CGauA') self.assertEqual(DnaAlphabet.rc('TatCG-NR'), 'YN-CGatA') self.assertEqual(RnaAlphabet.rc(''), '') self.assertEqual(RnaAlphabet.rc('A'), 'U') self.assertRaises(TypeError, ProteinAlphabet.rc, 'ACD') #if it wasn't a string, result should be a list self.assertEqual(RnaAlphabet.rc(list('UauCG-NR')), list('YN-CGauA')) self.assertEqual(RnaAlphabet.rc(('a','c')), ('g','u')) #constructor should fail for a dict self.assertRaises(ValueError, RnaAlphabet.rc, {'a':'c'})
def test_disambiguate(self): """Alphabet disambiguate should remove degenerate bases""" d = RnaAlphabet.disambiguate self.assertEqual(d(''), '') self.assertEqual(d('AGCUGAUGUA--CAGU'),'AGCUGAUGUA--CAGU') self.assertEqual(d('AUn-yrs-wkmCGwmrNMWRKY', 'strip'), 'AU--CG') self.assertEqual(d(tuple('AUn-yrs-wkmCGwmrNMWRKY'), 'strip'), \ tuple('AU--CG')) s = 'AUn-yrs-wkmCGwmrNMWRKY' t = d(s, 'random') u = d(s, 'random') for i, j in zip(s, t): if i in RnaAlphabet.Degenerates: assert j in RnaAlphabet.Degenerates[i] else: assert i == j self.assertNotEqual(t, u) self.assertEqual(d(tuple('UCAG'), 'random'), tuple('UCAG')) self.assertEqual(len(s), len(t)) assert RnaAlphabet.firstDegenerate(t) is None #should raise exception on unknown disambiguation method self.assertRaises(NotImplementedError, d, s, 'xyz')