1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
#!/usr/bin/env python
"""Unit tests for the microarray module, dealing with fake expression data."""
from cogent.util.unit_test import TestCase, main
from cogent.seqsim.randomization import shuffle_range, shuffle_between, \
shuffle_except_indices, shuffle_except
__author__ = "Rob Knight"
__copyright__ = "Copyright 2007-2009, The Cogent Project"
__credits__ = ["Rob Knight"]
__license__ = "GPL"
__version__ = "1.4.1"
__maintainer__ = "Rob Knight"
__email__ = "rob@spot.colorado.edu"
__status__ = "Development"
class randomization_tests(TestCase):
"""Tests of the top-level functionality"""
def setUp(self):
"""Make some standard objects to randomize"""
self.numbers = list('123')
self.letters = list('abcdef')
self.to_test = self.numbers + 2*self.letters + self.numbers
def test_shuffle_range(self):
"""shuffle_range should shuffle only inside range"""
shuffle_range(self.to_test, 3, -3)
self.assertEqual(self.to_test[:3],self.numbers)
self.assertEqual(self.to_test[-3:], self.numbers)
self.assertNotEqual(self.to_test[3:-3], 2*self.letters)
self.assertEqualItems(self.to_test[3:-3], 2*self.letters)
#this time, start is negative and end is positive
shuffle_range(self.to_test, -15, 15)
self.assertEqual(self.to_test[:3],self.numbers)
self.assertEqual(self.to_test[-3:], self.numbers)
self.assertNotEqual(self.to_test[3:-3], 2*self.letters)
self.assertEqualItems(self.to_test[3:-3], 2*self.letters)
def test_shuffle_between(self):
"""shuffle_between should shuffle between specified chars"""
shuffle_peptides = shuffle_between('KR')
seq1 = 'AGHCDSGAHF' #each 10 chars long
seq2 = 'PLMIDNYHGT'
protein = seq1 + 'K' + seq2
result = shuffle_peptides(protein)
self.assertEqual(result[10], 'K')
self.assertNotEqual(result[:10], seq1)
self.assertEqualItems(result[:10], seq1)
self.assertNotEqual(result[11:], seq2)
self.assertEqualItems(result[11:], seq2)
def test_shuffle_except_indices(self):
"""shuffle_except_indices should shuffle all except specified indices"""
seq1 = 'AGHCDSGAHF' #each 10 chars long
seq2 = 'PLMIDNYHGT'
protein = seq1 + 'K' + seq2
result = list(protein)
shuffle_except_indices(result, [10])
self.assertEqual(result[10], 'K')
self.assertNotEqual(''.join(result), protein)
self.assertEqualItems(''.join(result), protein)
self.assertNotEqualItems(''.join(result[:10]), seq1)
def test_shuffle_except(self):
"""shuffle_except_indices should shuffle all except specified indices"""
seq1 = 'AGHCDSGAHF' #each 10 chars long
seq2 = 'PLMIDNYHGT'
protein = seq1 + 'K' + seq2
prot = protein
se = shuffle_except('K')
result = se(prot)
self.assertEqual(result[10], 'K')
self.assertNotEqual(''.join(result), protein)
self.assertEqualItems(''.join(result), protein)
self.assertNotEqualItems(''.join(result[:10]), seq1)
if __name__ == '__main__':
main()
|