File: test_barcode.py

package info (click to toggle)
qiime 1.4.0-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 29,704 kB
  • sloc: python: 77,837; haskell: 379; sh: 113; makefile: 103
file content (67 lines) | stat: -rw-r--r-- 2,482 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
#!/usr/bin/env python

__author__ = "Justin Kuczynski"
__copyright__ = "Copyright 2011, The QIIME Project" #consider project name
__credits__ = ["Justin Kuczynski", "Rob Knight"] #remember to add yourself if you make changes
__license__ = "GPL"
__version__ = "1.4.0"
__maintainer__ = "Justin Kuczynski"
__email__ = "justinak@gmail.com"
__status__ = "Release"

from cogent.util.unit_test import TestCase, main

import qiime.barcode as barcode

class BarcodeTests(TestCase):
    """Tests of top-level functions"""

    def setUp(self):
        """Set up shared variables"""

    def test_correct_barcode(self):
        """ correct_barcode should correctly assign barcode to 2nd possibility, 
        2 errors
        """
        original = 'ATTTTTTTTTCG'
        recieved = 'ATTTTTTTTTTT'
        possibilities = ['TGTATTCGTGTA','ATTTTTTTTTCG','TGTAGGCGTGTA',
            'TGTAGAAGTGTA','TGTAGGCGTATA','TGTAAAAAAAAA']
        decoded, num_errors = barcode.correct_barcode(recieved, possibilities)
        self.assertEqual(decoded, original)
        self.assertEqual(num_errors, 2)
    
    def test_correct_barcode_bitwise(self):
        """ correct_barcode should correctly assign barcode to 2nd possibility, 
        2 base errors,
        3 bit errors with this nt_to_bits
        """
        nt_to_bits = { "A":"11",  "C":"00", "T":"10", "G":"01"}

        original = 'ATTTTTTTTTCG'
        recieved = 'ATTTTTTTTTTT'
        possibilities = ['TGTATTCGTGTA','ATTTTTTTTTCG','TGTAGGCGTGTA',
            'TGTAGAAGTGTA','TGTAGGCGTATA','TGTAAAAAAAAA']
        decoded, num_errors = barcode.correct_barcode_bitwise(\
            recieved, possibilities, nt_to_bits)
        self.assertEqual(decoded, original)
        self.assertEqual(num_errors, 3)
    
    def test_correct_barcode_bitwise_tie(self):
        """ correct_barcode should not assign barcode to to a tie situation
        """
        nt_to_bits = { "A":"11",  "C":"00", "T":"10", "G":"01"}

        #~ original = 'ATTTTTTTTTCG' #doesn't matter, last entry is just
        # as close to recieved as original is
        recieved = 'ATTTTTTTTTTT'
        possibilities = ['TGTATTCGTGTA','ATTTTTTTTTCG','TGTAGGCGTGTA',
            'TGTAGAAGTGTA','TGTAGGCGTATA','TGTAAAAAAAAA', 'ATTTTTTTTAAA']
        decoded, num_errors = barcode.correct_barcode_bitwise(\
            recieved, possibilities, nt_to_bits)
        self.assertEqual(decoded, None)
        self.assertEqual(num_errors, 3)

if __name__ == '__main__':
    main()