File: test_randomization.py

package info (click to toggle)
python-cogent 1.4.1-1.2
  • links: PTS, VCS
  • area: non-free
  • in suites: squeeze
  • size: 13,260 kB
  • ctags: 20,087
  • sloc: python: 116,163; ansic: 732; makefile: 74; sh: 9
file content (78 lines) | stat: -rw-r--r-- 3,201 bytes parent folder | download
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()