2 Created on Sep 10, 2010
8 from erange.rnapath import RNAPATH
34 class TestRNAPATH(unittest.TestCase):
35 incontigfilename = "contigIn.txt"
36 distalPairsfile = "distalPair.txt"
37 outpathfilename = "rnapathOut.txt"
38 outcontigfilename = "contigOut.txt"
41 inContigs = open(self.incontigfilename, "w")
44 distal = open(self.distalPairsfile, "w")
50 os.remove(self.incontigfilename)
55 os.remove(self.distalPairsfile)
60 os.remove(self.outpathfilename)
65 os.remove(self.outcontigfilename)
71 for nt in compDict.keys():
72 self.assertEquals(compDict[nt], RNAPATH.compNT(nt))
74 self.assertEquals("N", RNAPATH.compNT("5"))
75 self.assertEquals("N", RNAPATH.compNT("anything"))
78 def testComplement(self):
79 self.assertEquals("", RNAPATH.complement(""))
80 for nt in compDict.keys():
81 self.assertEquals(compDict[nt], RNAPATH.complement(nt))
83 self.assertEquals("TGTAATC", RNAPATH.complement("GATTACA"))
84 self.assertEquals("TGTAATC", RNAPATH.complement("GATTACA", 7))
85 self.assertEquals("TGTAATC", RNAPATH.complement("GATTACA", -75632))
86 self.assertEquals("TGTA", RNAPATH.complement("GATTACA", 4))
88 #TODO: do we want to return when length > seqlength? This is
89 # the current return and it seems very wrong we only N fill
90 # after going more then seqlength in negative direction
91 self.assertEquals("TGTAATCTG", RNAPATH.complement("GATTACA", 9))
92 self.assertEquals("TGTAATCTGTAATCNNNNN", RNAPATH.complement("GATTACA", 19))
95 def testRnaPath(self):
96 RNAPATH.rnaPath(self.incontigfilename, self.distalPairsfile, self.outpathfilename, self.outcontigfilename)
97 outfile = open(self.outpathfilename)
98 self.assertTrue("#settings:" in outfile.readline())
99 self.assertEquals("", outfile.readline())
101 outcontig = open(self.outcontigfilename)
102 self.assertEquals(0, len(outcontig.readlines()))
105 #infile = open(self.incontigfilename, "w")
106 #infile.write(">chr1 stuff\n")
107 #infile.write("GATTACA\n")
109 #RNAPATH.rnaPath(self.incontigfilename, self.distalPairsfile, self.outpathfilename, self.outcontigfilename)
110 #outfile = open(self.outpathfilename)
111 #self.assertTrue("#settings:" in outfile.readline())
112 #self.assertEquals("", outfile.readline())
117 def testGetPath(self):
122 def testTraverseGraph(self):
124 edgeMatrix = RNAPATH.EdgeMatrix(0)
125 pathList, visitedDict = RNAPATH.traverseGraph(leafList, edgeMatrix)
126 self.assertEquals([], pathList)
127 self.assertEquals({}, visitedDict)
130 edgeMatrix = RNAPATH.EdgeMatrix(3)
131 edgeMatrix.edgeArray[2][1] = 3
132 edgeMatrix.edgeArray[1][2] = 3
133 pathList, visitedDict = RNAPATH.traverseGraph(leafList, edgeMatrix)
134 self.assertEquals([ [1, 2] ], pathList)
135 self.assertEquals({1: "", 2: ""}, visitedDict)
138 edgeMatrix = RNAPATH.EdgeMatrix(3)
139 edgeMatrix.edgeArray[2][1] = 3
140 edgeMatrix.edgeArray[1][2] = 3
141 pathList, visitedDict = RNAPATH.traverseGraph(leafList, edgeMatrix)
142 self.assertEquals([ [1, 2] ], pathList)
143 self.assertEquals({1: "", 2: ""}, visitedDict)
147 def testGetContigsFromFile(self):
148 contigNum, nameList, contigDict, origSize = RNAPATH.getContigsFromFile(self.incontigfilename)
149 self.assertEquals(0, contigNum)
150 self.assertEquals([], nameList)
151 self.assertEquals({}, contigDict)
152 self.assertEquals([], origSize)
155 #TODO: check for boundary condition and special cases
156 def testEdgeMatrix(self):
157 edgeMatrix = RNAPATH.EdgeMatrix(0)
159 self.assertEquals(result, str(edgeMatrix.edgeArray))
161 edgeMatrix = RNAPATH.EdgeMatrix(3)
162 result = "[[0 0 0]\n [0 0 0]\n [0 0 0]]"
163 self.assertEquals(result, str(edgeMatrix.edgeArray))
164 self.assertEquals([], edgeMatrix.visitLink(0))
166 edgeMatrix.edgeArray[0][1] = 1
167 self.assertEquals([], edgeMatrix.visitLink(0))
169 edgeMatrix.edgeArray[0][1] = 2
171 self.assertEquals(result, edgeMatrix.visitLink(0))
173 edgeMatrix.edgeArray[2][1] = 2
175 self.assertEquals(result, edgeMatrix.visitLink(0))
176 edgeMatrix.edgeArray[2][1] = 2
178 self.assertEquals(result, edgeMatrix.visitLink(1))
179 edgeMatrix.edgeArray[2][1] = 2
181 self.assertEquals(result, edgeMatrix.visitLink(2))
183 edgeMatrix.edgeArray[2][1] = 3
184 edgeMatrix.edgeArray[1][2] = 3
186 self.assertEquals(result, edgeMatrix.visitLink(1))
190 argv = ["RNAPATH", self.incontigfilename, self.distalPairsfile, self.outpathfilename, self.outcontigfilename]
192 outfile = open(self.outpathfilename)
193 self.assertTrue("#settings:" in outfile.readline())
194 self.assertEquals("", outfile.readline())
196 outcontig = open(self.outcontigfilename)
197 self.assertEquals(0, len(outcontig.readlines()))
202 suite = unittest.TestSuite()
203 suite.addTest(unittest.makeSuite(TestRNAPATH))
208 if __name__ == "__main__":
209 #import sys;sys.argv = ['', 'Test.testName']