annotate commons/core/coord/test/Test_Align.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 import time
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
35 from commons.core.coord.Align import Align
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
36 from commons.core.coord.Map import Map
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
37 from commons.core.utils.FileUtils import FileUtils
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
38 from commons.core.coord.Range import Range
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
39
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
40
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
41 class Test_Align( unittest.TestCase ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
42
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
43 def setUp(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
44 self._align = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
45 self._uniqId = "%s_%s" % ( time.strftime("%Y%m%d%H%M%S"), os.getpid() )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
46
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
47 def tearDown(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
48 self._align = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
49
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
50 def test_isEmpty_True(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
51 alignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
52
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
53 self.assertTrue(alignInstance.isEmpty())
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
54
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
55 def test_isEmpty_True_query_is_empty(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
56 alignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
57 line = "\t-1\t-1\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
58 alignInstance.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
59
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
60 self.assertTrue(alignInstance.isEmpty())
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
61
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
62 def test_isEmpty_True_subject_is_empty(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
63 alignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
64 line = "chr1\t2\t20\t\t-1\t-1\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
65 alignInstance.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
66
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
67 self.assertTrue(alignInstance.isEmpty())
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
68
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
69 def test_isEmpty_False(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
70 alignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
71 line = "chr1\t2\t20\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
72 alignInstance.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
73
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
74 self.assertFalse(alignInstance.isEmpty())
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
75
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
76 def test_read(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
77 line = "chr2\t1\t10\tTE3\t11\t17\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
78 expReturn = 1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
79
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
80 dummyMockAlignFile = "dummyMockAlignFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
81 mockAlignFileHandle = open(dummyMockAlignFile, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
82 mockAlignFileHandle.write(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
83 mockAlignFileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
84
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
85 expAlignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
86 expAlignInstance.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
87
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
88 mockAlignFileHandle = open(dummyMockAlignFile, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
89 obsAlignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
90 obsReturn = obsAlignInstance.read(mockAlignFileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
91
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
92 mockAlignFileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
93 os.remove(dummyMockAlignFile)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
94
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
95 self.assertEquals(expAlignInstance, obsAlignInstance)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
96 self.assertEquals(expReturn, obsReturn)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
97
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
98 def test_read_empty_file(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
99 expReturn = 0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
100
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
101 dummyMockAlignFile = "dummyMockAlignFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
102 mockAlignFileHandle = open(dummyMockAlignFile, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
103 mockAlignFileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
104
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
105 mockAlignFileHandle = open(dummyMockAlignFile, "r")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
106 obsAlignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
107 obsReturn = obsAlignInstance.read(mockAlignFileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
108 os.remove(dummyMockAlignFile)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
109
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
110 self.assertEquals(expReturn, obsReturn)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
111
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
112 def test_write (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
113 expAlignFile = "expMockAlignFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
114 expAlignFileHandle = open(expAlignFile, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
115 expLine = "chr1\t1\t10\tTE2\t3\t10\t0\t30\t90.200000\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
116 expAlignFileHandle.write(expLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
117 expAlignFileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
118
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
119 obsAlignFile = "obsAlignFile"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
120 obsAlignFileHandle = open(obsAlignFile, "w")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
121 obsAlignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
122 obsAlignTuple = ("chr1", 1, 10, "TE2", 3, 10, 0.0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
123 obsAlignInstance.setFromTuple(obsAlignTuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
124 obsAlignInstance.write(obsAlignFileHandle)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
125 obsAlignFileHandle.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
126
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
127 self.assertTrue( FileUtils.are2FilesIdentical( expAlignFile, obsAlignFile ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
128 os.remove(expAlignFile)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
129 os.remove(obsAlignFile)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
130
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
131 def test_merge (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
132 alignInstanceChr1 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
133 alignInstanceChr2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
134
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
135 line1 = "chr1\t1\t10\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
136 line2 = "chr2\t1\t10\tTE2\t11\t17\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
137
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
138 alignInstanceChr1.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
139 alignInstanceChr2.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
140
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
141 expResult = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
142 obsResult = alignInstanceChr1.merge(alignInstanceChr2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
143
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
144 self.assertEquals(expResult, obsResult)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
145
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
146 line1 = "chr1\t1\t10\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
147 line2 = "chr1\t1\t10\tTE3\t11\t17\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
148
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
149 alignInstanceTE2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
150 alignInstanceTE3 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
151
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
152 alignInstanceTE2.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
153 alignInstanceTE3.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
154
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
155 expResult = None
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
156 obsResult = alignInstanceTE2.merge(alignInstanceTE3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
157
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
158 self.assertEquals(expResult, obsResult)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
159
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
160 def test_merge_plus_strand1 (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
161 alignInstance1 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
162 alignInstance2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
163
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
164 line1 = "chr1\t2\t20\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
165 line2 = "chr1\t1\t10\tTE2\t1\t9\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
166
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
167 alignInstance1.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
168 alignInstance2.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
169
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
170 expLine = "chr1\t1\t20\tTE2\t1\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
171 expAlign = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
172 expAlign.setFromString(expLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
173
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
174 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
175 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
176
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
177 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
178
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
179 def test_merge_plus_strand2 (self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
180 alignInstance1 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
181 alignInstance2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
182
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
183 line1 = "chr1\t2\t20\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
184 line2 = "chr1\t4\t30\tTE2\t4\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
185
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
186 alignInstance1.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
187 alignInstance2.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
188
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
189 expLine = "chr1\t2\t30\tTE2\t3\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
190 expAlign = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
191 expAlign.setFromString(expLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
192
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
193 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
194 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
195
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
196 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
197
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
198 def test_merge_plus_strand3 (self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
199 alignInstance1 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
200 alignInstance2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
201
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
202 line1 = "chr1\t2\t10\tTE2\t3\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
203 line2 = "chr1\t1\t20\tTE2\t1\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
204
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
205 alignInstance1.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
206 alignInstance2.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
207
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
208 expLine = "chr1\t1\t20\tTE2\t1\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
209 expAlign = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
210 expAlign.setFromString(expLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
211
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
212 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
213 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
214
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
215 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
216
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
217 def test_merge_plus_strand4 (self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
218 alignInstance1 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
219 alignInstance2 = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
220
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
221 line1 = "chr1\t1\t20\tTE2\t1\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
222 line2 = "chr1\t2\t10\tTE2\t2\t10\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
223
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
224 alignInstance1.setFromString(line1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
225 alignInstance2.setFromString(line2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
226
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
227 expLine = "chr1\t1\t20\tTE2\t1\t12\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
228 expAlign = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
229 expAlign.setFromString(expLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
230
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
231 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
232 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
233
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
234 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
235
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
236 def test_merge__neg_strand1 (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
237
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
238 rangeQuery1 = Range("chr1", 20, 2); rangeSubject1 = Range("TE2", 10, 3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
239 rangeQuery2 = Range("chr1", 1, 10); rangeSubject2 = Range("TE2", 1, 9)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
240
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
241 alignInstance1 = Align(rangeQuery1, rangeSubject1, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
242 alignInstance2 = Align(rangeQuery2, rangeSubject2, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
243
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
244 expRangeQuery = Range("chr1", 20, 1); expRangeSubject = Range("TE2", 10, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
245 expAlign = Align(expRangeQuery, expRangeSubject, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
246
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
247 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
248 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
249
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
250 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
251
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
252 def test_merge__neg_strand2 (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
253 rangeQuery1 = Range("chr1", 20, 2); rangeSubject1 = Range("TE2", 10, 3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
254 rangeQuery2 = Range("chr1", 4, 30); rangeSubject2 = Range("TE2", 4, 12)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
255
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
256 alignInstance1 = Align(rangeQuery1, rangeSubject1, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
257 alignInstance2 = Align(rangeQuery2, rangeSubject2, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
258
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
259 expRangeQuery = Range("chr1", 30, 2); expRangeSubject = Range("TE2", 12, 3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
260 expAlign = Align(expRangeQuery, expRangeSubject, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
261
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
262 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
263 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
264
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
265 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
266
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
267 def test_merge_neg_strand3 (self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
268 rangeQuery1 = Range("chr1", 10, 2); rangeSubject1 = Range("TE2", 10, 3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
269 rangeQuery2 = Range("chr1", 1, 20); rangeSubject2 = Range("TE2", 1, 12)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
270
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
271 alignInstance1 = Align(rangeQuery1, rangeSubject1, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
272 alignInstance2 = Align(rangeQuery2, rangeSubject2, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
273
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
274 expRangeQuery = Range("chr1", 20, 1); expRangeSubject = Range("TE2", 12, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
275 expAlign = Align(expRangeQuery, expRangeSubject, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
276
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
277 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
278 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
279
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
280 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
281
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
282 def test_merge_neg_strand4 (self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
283 rangeQuery1 = Range("chr1", 20, 1); rangeSubject1 = Range("TE2", 12, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
284 rangeQuery2 = Range("chr1", 2, 10); rangeSubject2 = Range("TE2", 2, 10)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
285
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
286 alignInstance1 = Align(rangeQuery1, rangeSubject1, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
287 alignInstance2 = Align(rangeQuery2, rangeSubject2, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
288
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
289 expRangeQuery = Range("chr1", 20, 1); expRangeSubject = Range("TE2", 12, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
290 expAlign = Align(expRangeQuery, expRangeSubject, 0, 30, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
291
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
292 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
293 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
294
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
295 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
296
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
297 def test_merge_id_score_identity_eValue (self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
298 rangeQuery1 = Range("chr1", 20, 1); rangeSubject1 = Range("TE2", 12, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
299 rangeQuery2 = Range("chr1", 2, 10); rangeSubject2 = Range("TE2", 2, 10)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
300
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
301 alignInstance1 = Align(rangeQuery1, rangeSubject1, 0.05, 20, 90.2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
302 alignInstance1.id = 1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
303 alignInstance2 = Align(rangeQuery2, rangeSubject2, 0, 30, 90.3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
304 alignInstance2.id = 2
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
305
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
306 expRangeQuery = Range("chr1", 20, 1); expRangeSubject = Range("TE2", 12, 1)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
307 expAlign = Align(expRangeQuery, expRangeSubject, 0, 30, 90.3)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
308 expAlign.id = 1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
309
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
310 alignInstance1.merge(alignInstance2)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
311 obsAlign = alignInstance1
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
312
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
313 self.assertEquals(expAlign, obsAlign)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
314 self.assertEquals(expAlign.id, obsAlign.id)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
315
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
316 def test_setFromTuple_QryRev(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
317 self._align.setFromTuple( ( "qry1", 100, 1, "sbj1", 201, 300, 0.0, 135, 97.2 ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
318 self.assertEqual( self._align.range_query.seqname, "qry1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
319 self.assertEqual( self._align.range_query.start, 1 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
320 self.assertEqual( self._align.range_query.end, 100 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
321 self.assertEqual( self._align.range_subject.seqname, "sbj1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
322 self.assertEqual( self._align.range_subject.start, 300 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
323 self.assertEqual( self._align.range_subject.end, 201 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
324 self.assertEqual( self._align.e_value, 0.0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
325 self.assertEqual( self._align.score, 135 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
326 self.assertEquals( self._align.identity, 97.2 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
327
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
328 def test_setFromTuple_identityAsFloat(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
329 self._align.setFromTuple( ( "qry1", "301", "600", "sbj1", "1", "300", "0.0", "135", 0.0) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
330 self.assertEqual( self._align.range_query.seqname, "qry1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
331 self.assertEqual( self._align.range_query.start, 301 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
332 self.assertEqual( self._align.range_query.end, 600 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
333 self.assertEqual( self._align.range_subject.seqname, "sbj1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
334 self.assertEqual( self._align.range_subject.start, 1 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
335 self.assertEqual( self._align.range_subject.end, 300 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
336 self.assertEqual( self._align.e_value, float("0.0") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
337 self.assertEqual( self._align.score, float("135") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
338 self.assertEquals( self._align.identity, 0.0 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
339
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
340 def test_setFromString(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
341 line = "chr1\t1\t10\tTE2\t11\t17\t1e-20\t30\t90.2\n"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
342 self._align.setFromString( line )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
343 self.assertEqual( self._align.range_query.seqname, "chr1" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
344 self.assertEqual( self._align.range_query.start, 1 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
345 self.assertEqual( self._align.range_query.end, 10 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
346 self.assertEqual( self._align.range_subject.seqname, "TE2" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
347 self.assertEqual( self._align.range_subject.start, 11 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
348 self.assertEqual( self._align.range_subject.end, 17 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
349 self.assertEqual( self._align.e_value, float("1e-20") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
350 self.assertEqual( self._align.score, float("30") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
351 self.assertEquals( float(self._align.identity), float("90.2") )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
352
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
353 def test__eq__(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
354 self._align.setFromString( "chr1\t1\t6\tTE2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
355 o = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
356 o.setFromString( "chr1\t1\t6\tTE2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
357 self.assertEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
358 o.setFromString( "chromosome1\t1\t6\tTE2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
359 self.assertNotEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
360 o.setFromString( "chr1\t1\t6\ttranspElem2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
361 self.assertNotEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
362 o.setFromString( "chr1\t100\t600\tTE2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
363 self.assertNotEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
364 o.setFromString( "chr1\t1\t6\tTE2\t1100\t1600\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
365 self.assertNotEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
366 o.setFromString( "chr1\t1\t6\tTE2\t11\t16\t1e-20\t30000\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
367 self.assertNotEqual( self._align, o )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
368
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
369 def test_getSubjectAsMapOfQuery_direct(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
370 exp = Map( name="TE2", seqname="chr1", start=1, end=6 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
371 self._align.setFromString( "chr1\t1\t6\tTE2\t11\t16\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
372 obs = self._align.getSubjectAsMapOfQuery()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
373 self.assertEqual( obs, exp )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
374
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
375 def test_getSubjectAsMapOfQuery_reverse(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
376 exp = Map( name="TE2", seqname="chr1", start=6, end=1 )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
377 self._align.setFromString( "chr1\t1\t6\tTE2\t16\t11\t1e-20\t30\t90.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
378 obs = self._align.getSubjectAsMapOfQuery()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
379 self.assertEqual( obs, exp )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
380
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
381 def test_writeSubjectAsMapOfQuery( self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
382 self._align.setFromTuple( ( "chr3", "250", "151", "seq5", "1", "100", "1e-32", "147", "87.9" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
383 expFile = "dummyExpFile_%s" % ( self._uniqId )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
384 expFileHandler = open( expFile, "w" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
385 expFileHandler.write( "seq5\tchr3\t250\t151\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
386 expFileHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
387 obsFile = "dummyObsFile_%s" % ( self._uniqId )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
388 obsFileHandler = open( obsFile, "w" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
389 self._align.writeSubjectAsMapOfQuery( obsFileHandler )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
390 obsFileHandler.close()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
391 self.assertTrue( FileUtils.are2FilesIdentical( expFile, obsFile ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
392 for f in [ expFile, obsFile ]:
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
393 if os.path.exists( f ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
394 os.remove( f )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
395
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
396 def test_areQrySbjOnOppositeStrands(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
397 self._align.setFromTuple( ( "qry1", "1", "100", "sbj1", "1", "100", "0.0", "135", "95.7" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
398 obs = self._align.areQrySbjOnOppositeStrands()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
399 self.assertFalse( obs )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
400 self._align.setFromTuple( ( "qry1", "600", "301", "sbj1", "1", "300", "0.0", "135", "95.7" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
401 obs = self._align.areQrySbjOnOppositeStrands()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
402 self.assertTrue( obs )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
403
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
404 def test_reverse(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
405 line = "chr1\t1\t10\tTE2\t11\t17\t1e-20\t30\t90.2"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
406 expLine = "chr1\t10\t1\tTE2\t17\t11\t1e-20\t30\t90.200000"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
407
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
408 obsAlignInstance = Align()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
409 obsAlignInstance.setFromString(line)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
410 obsAlignInstance.reverse()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
411 obsLine = obsAlignInstance.toString()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
412
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
413 self.assertEquals(expLine, obsLine)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
414
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
415 def test_getMapsOfQueryAndSubject(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
416 self._align.setFromTuple( ( "qry1", "1", "100", "sbj1", "1", "100", "0.0", "135", "95.7" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
417
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
418 expMapQuery = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
419 expMapQuery.setFromTuple( ( "repet", "qry1", "1", "100" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
420 expMapSubject = Map()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
421 expMapSubject.setFromTuple( ( "repet", "sbj1", "1", "100" ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
422
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
423 obsMapQuery, obsMapSubject = self._align.getMapsOfQueryAndSubject()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
424
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
425 self.assertEqual( expMapQuery, obsMapQuery )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
426 self.assertEqual( expMapSubject, obsMapSubject )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
427
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
428 def test_getBin_bin_level_9(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
429 tuple = ("chr1","190000000","390000000","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
430 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
431 expRes = 100000000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
432 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
433 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
434
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
435 def test_getBin_bin_level_8(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
436 tuple = ("chr1","19000000","39000000","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
437 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
438 expRes = 100000000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
439 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
440 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
441
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
442 def test_getBin_bin_level_7(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
443 tuple = ("chr1","1900000","3900000","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
444 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
445 expRes = 10000000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
446 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
447 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
448
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
449 def test_getBin_bin_level_6(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
450 tuple = ("chr1","190000","390000","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
451 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
452 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
453 expRes = 1000000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
454 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
455
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
456 def test_getBin_bin_level_5(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
457 tuple = ("chr1","19000","39000","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
458 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
459 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
460 expRes = 100000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
461 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
462
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
463 def test_getBin_bin_level_4(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
464 tuple = ("chr1","1900","3900","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
465 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
466 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
467 expRes = 10000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
468 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
469
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
470 def test_getBin_bin_level_3(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
471 tuple = ("chr1","190","390","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
472 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
473 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
474 expRes = 1000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
475 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
476
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
477 def test_getBin_bin_level_2(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
478 tuple = ("chr1","19","39","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
479 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
480 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
481 expRes = 1000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
482 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
483
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
484 def test_getBin_bin_level_1(self):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
485 tuple = ("chr1","1","3","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
486 self._align.setFromTuple(tuple)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
487 obsRes = self._align.getBin()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
488 expRes = 1000.0
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
489 self.assertEquals(expRes, obsRes)
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
490
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
491
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
492 def test_switchQuerySubject_directS( self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
493 tuple = ("chr1","1","3","TE2","11","17","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
494 self._align.setFromTuple( tuple )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
495 exp = Align( Range("TE2","11","17"), Range("chr1","1","3"), "1e-20", "30", "90.2" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
496 self._align.switchQuerySubject()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
497 self.assertEquals( exp, self._align )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
498
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
499
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
500 def test_switchQuerySubject_reverseS( self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
501 tuple = ("chr1","1","3","TE2","17","11","1e-20","30","90.2")
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
502 self._align.setFromTuple( tuple )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
503 exp = Align( Range("TE2","11","17"), Range("chr1","3","1"), "1e-20", "30", "90.2" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
504 self._align.switchQuerySubject()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
505 self.assertEquals( exp, self._align )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
506
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
507
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
508 def test_toStringAsGff( self ):
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
509 self._align.setFromString( "chr1\t1\t10\tTE3\t11\t17\t1e-20\t30\t85.2\n" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
510 exp = "chr1\tREPET\tmatch\t1\t10\t1e-20\t+\t.\tID=23;Target=TE3 11 17"
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
511 obs = self._align.toStringAsGff( ID="23" )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
512 self.assertEqual( obs, exp )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
513
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
514
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
515 test_suite = unittest.TestSuite()
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
516 test_suite.addTest( unittest.makeSuite( Test_Align ) )
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
517 if __name__ == "__main__":
769e306b7933 Change the repository level.
yufei-luo
parents:
diff changeset
518 unittest.TextTestRunner(verbosity=2).run( test_suite )