annotate commons/core/coord/test/Test_Map.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
1 # Copyright INRA (Institut National de la Recherche Agronomique)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
2 # http://www.inra.fr
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
3 # http://urgi.versailles.inra.fr
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
4 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
5 # This software is governed by the CeCILL license under French law and
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
6 # abiding by the rules of distribution of free software. You can use,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
7 # modify and/ or redistribute the software under the terms of the CeCILL
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
8 # license as circulated by CEA, CNRS and INRIA at the following URL
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
9 # "http://www.cecill.info".
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
10 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
11 # As a counterpart to the access to the source code and rights to copy,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
12 # modify and redistribute granted by the license, users are provided only
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
13 # with a limited warranty and the software's author, the holder of the
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
14 # economic rights, and the successive licensors have only limited
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
15 # liability.
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
16 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
17 # In this respect, the user's attention is drawn to the risks associated
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
18 # with loading, using, modifying and/or developing or reproducing the
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
19 # software by the user in light of its specific status of free software,
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
20 # that may mean that it is complicated to manipulate, and that also
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
21 # therefore means that it is reserved for developers and experienced
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
22 # professionals having in-depth computer knowledge. Users are therefore
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
23 # encouraged to load and test the software's suitability as regards their
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
24 # requirements in conditions enabling the security of their systems and/or
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
25 # data to be ensured and, more generally, to use and operate it in the
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
26 # same conditions as regards security.
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
27 #
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
28 # The fact that you are presently reading this means that you have had
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
29 # knowledge of the CeCILL license and that you accept its terms.
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
30
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
31
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
32 import unittest
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
33 import os
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
34 from commons.core.coord.Map import Map
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 from commons.core.utils.FileUtils import FileUtils
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 class Test_Map( unittest.TestCase ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41 self._map = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 def test_setFromString(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44 line = "MbQ12Gr2Cl2\tconsensus1\t51\t1230\n" # test with '\t' separator
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 self._map.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46 self.assertEqual( self._map.name, "MbQ12Gr2Cl2" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47 self.assertEqual( self._map.seqname, "consensus1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48 self.assertEqual( self._map.start, 51 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49 self.assertEqual( self._map.end, 1230 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 line = "MbQ12Gr2Cl2;consensus1;51;1230" # test with ';' separator
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 self._map.setFromString(line,";")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52 self.assertEqual( self._map.name, "MbQ12Gr2Cl2" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53 self.assertEqual( self._map.seqname, "consensus1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54 self.assertEqual( self._map.start, 51 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55 self.assertEqual( self._map.end, 1230 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57 def test___eq__(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 self._map.setFromString( "MbQ12Gr2Cl2\tconsensus1\t51\t1230\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59 o = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60 o.setFromString( "MbQ12Gr2Cl2\tconsensus1\t51\t1230\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61 self.assertEqual( self._map, o ) # same data
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 o.setFromString( "MbQ12Gr2Cl1\tconsensus1\t51\t1230\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 self.assertNotEqual( self._map, o ) # different name
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64 o.setFromString( "MbQ12Gr2Cl2\tconsensus2\t51\t1230\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 self.assertNotEqual( self._map, o ) # different seqname
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66 o.setFromString( "MbQ12Gr2Cl2\tconsensus1\t15\t1230\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67 self.assertNotEqual( self._map, o ) # different start
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68 o.setFromString( "MbQ12Gr2Cl2\tconsensus1\t51\t123000\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 self.assertNotEqual( self._map, o ) # different end
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70 o.setFromString( "MbQ12Gr2Cl2\tconsensus1\t1230\t51\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71 self.assertNotEqual( self._map, o ) # same start/end but in different order
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73 def test_setFromTuple(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 tuple = ("MbQ12Gr2Cl2", "consensus1","51","1230")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75 self._map.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 expMap = Map("MbQ12Gr2Cl2", "consensus1",51,1230)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78 obsMap = self._map
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 self.assertEquals(expMap, obsMap)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82 def test_read_empty_file(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84 fileName = "dummyFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 os.system("touch " + fileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 fileHandle = open(fileName, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 obsResult = self._map.read(fileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89 expResult = 0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
92 os.remove(fileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
93
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
94 self.assertEquals(expResult, obsResult)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
95
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
96 def test_read_uncompleted_line( self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
97 uncompletedLine = "MbQ12Gr2Cl2\tconsensus1\t51"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
98 fileName = "dummyFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
99
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
100 fileHandle = open(fileName, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
101 fileHandle.write(uncompletedLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
102 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
103
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
104 fileHandle = open(fileName, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
105
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
106 obsResult = self._map.read(fileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
107 expResult = 0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
108
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
109 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
110 os.remove(fileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
111
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
112 self.assertEquals(obsResult, expResult)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
113
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
114 def test_read(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
115 line = "MbQ12Gr2Cl2\tconsensus1\t51\t1230\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
116 fileName = "dummyFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
117
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
118 fileHandle = open(fileName, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
119 fileHandle.write(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
120 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
121
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
122 fileHandle = open(fileName, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
123 self._map.read(fileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
124 obsResult = self._map
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
125
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
126 expResult = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
127 expResult.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
128
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
129 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
130 os.remove(fileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
131
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
132 self.assertEquals(obsResult, expResult)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
133
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
134 def test_write(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
135 line = "MbQ12Gr2Cl2\tconsensus1\t51\t1230\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
136 expFileName = "expFileName"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
137
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
138 fileHandle = open(expFileName, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
139 fileHandle.write(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
140 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
141
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
142 obsFileName = "obsFileName"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
143 fileHandle = open(obsFileName, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
144 self._map.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
145 self._map.write(fileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
146 fileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
147
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
148 self.assertTrue( FileUtils.are2FilesIdentical( expFileName, obsFileName ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
149
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
150 os.remove(obsFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
151 os.remove(expFileName)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
152
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
153 def test_diff1(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
154 map1 = Map("seq1","DmelChr4", 190000, 390000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
155 map2 = Map("seq2","DmelChr4", 290000, 590000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
156
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
157 expMap1 = Map("seq1", "DmelChr4", 190000, 289999)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
158 expReturnedMap = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
159
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
160 obsReturnedMap = map1.diff(map2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
161 obsMap1 = map1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
162
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
163 self.assertEquals(expMap1, obsMap1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
164 self.assertEquals(expReturnedMap, obsReturnedMap)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
165
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
166 def test_diff2(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
167 map1 = Map("seq1","DmelChr4", 190000, 590000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
168 map2 = Map("seq2","DmelChr4", 290000, 390000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
169
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
170 expMap1 = Map("seq1", "DmelChr4", 190000, 289999)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
171 expReturnedMap = Map("seq1", "DmelChr4", 390001, 590000)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
172
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
173 obsReturnedMap = map1.diff(map2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
174 obsMap1 = map1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
175
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
176 self.assertEquals(expMap1, obsMap1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
177 self.assertEquals(expReturnedMap, obsReturnedMap)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
178
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
179
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
180 test_suite = unittest.TestSuite()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
181 test_suite.addTest( unittest.makeSuite( Test_Map ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
182 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
183 unittest.TextTestRunner(verbosity=2).run( test_suite )