2 Created on Sep 15, 2010
8 from erange.rnapath import processvelvet
11 class TestProcessVelvet(unittest.TestCase):
12 inFileName = "testProcessVelvetIn.txt"
13 filterFileName = "testProcessVelvetFilter.txt"
14 outFileName = "testProcessVelvetOut.txt"
18 infile = open(self.inFileName, "w")
20 filter = open(self.filterFileName, "w")
21 filter.write("0\t1\t2\t3\t4\t5\t6\t7\t8\tNODE1-1_0\n")
27 os.remove(self.inFileName)
32 os.remove(self.filterFileName)
37 os.remove(self.outFileName)
42 def testProcessVelvet(self):
43 processvelvet.processvelvet(self.inFileName, self.outFileName)
44 outfile = open(self.outFileName)
46 self.assertEquals("", line)
48 os.remove(self.outFileName)
50 infile = open(self.inFileName, "w")
51 print >> infile, ">NODE1-1_0"
52 print >> infile, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
55 processvelvet.processvelvet(self.inFileName, self.outFileName)
56 outfile = open(self.outFileName)
57 self.assertEquals(">chr0\n", outfile.readline())
58 self.assertEquals("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", outfile.readline())
59 self.assertEquals("", outfile.readline())
61 os.remove(self.outFileName)
62 processvelvet.processvelvet(self.inFileName, self.outFileName, filterFileName=self.filterFileName)
63 outfile = open(self.outFileName)
64 self.assertEquals("", outfile.readline())
66 os.remove(self.outFileName)
68 infile = open(self.inFileName, "w")
69 print >> infile, ">NODE1-1_1"
70 print >> infile, "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
71 print >> infile, ">NODE1-1_0"
72 print >> infile, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
75 processvelvet.processvelvet(self.inFileName, self.outFileName)
76 outfile = open(self.outFileName)
77 self.assertEquals(">chr1\n", outfile.readline())
78 self.assertEquals("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n", outfile.readline())
79 self.assertEquals(">chr0\n", outfile.readline())
80 self.assertEquals("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", outfile.readline())
81 self.assertEquals("", outfile.readline())
83 os.remove(self.outFileName)
84 processvelvet.processvelvet(self.inFileName, self.outFileName, filterFileName=self.filterFileName)
85 outfile = open(self.outFileName)
86 self.assertEquals(">chr1\n", outfile.readline())
87 self.assertEquals("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n", outfile.readline())
88 self.assertEquals("", outfile.readline())
90 os.remove(self.outFileName)
92 infile = open(self.inFileName, "w")
93 print >> infile, ">NODE1-1_1"
94 print >> infile, "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT"
95 print >> infile, ">NODE1-1_0"
96 print >> infile, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
97 print >> infile, ">NODE1-1_2"
98 print >> infile, "GATTACA"
101 processvelvet.processvelvet(self.inFileName, self.outFileName)
102 outfile = open(self.outFileName)
103 self.assertEquals(">chr1\n", outfile.readline())
104 self.assertEquals("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n", outfile.readline())
105 self.assertEquals(">chr0\n", outfile.readline())
106 self.assertEquals("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", outfile.readline())
107 self.assertEquals(">chr2\n", outfile.readline())
108 self.assertEquals("GATTACA\n", outfile.readline())
109 self.assertEquals("", outfile.readline())
111 os.remove(self.outFileName)
112 processvelvet.processvelvet(self.inFileName, self.outFileName, filterFileName=self.filterFileName)
113 outfile = open(self.outFileName)
114 self.assertEquals(">chr1\n", outfile.readline())
115 self.assertEquals("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n", outfile.readline())
116 self.assertEquals(">chr2\n", outfile.readline())
117 self.assertEquals("GATTACA\n", outfile.readline())
118 self.assertEquals("", outfile.readline())
120 os.remove(self.outFileName)
121 processvelvet.processvelvet(self.inFileName, self.outFileName, filterFileName=self.filterFileName, minSize=10)
122 outfile = open(self.outFileName)
123 self.assertEquals(">chr1\n", outfile.readline())
124 self.assertEquals("TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT\n", outfile.readline())
125 self.assertEquals("", outfile.readline())
129 def testGetFilterList(self):
130 self.assertEquals([], processvelvet.getFilterList())
131 self.assertEquals(["NODE1-1_0"], processvelvet.getFilterList(self.filterFileName))
132 self.assertEquals([], processvelvet.getFilterList("whatfile?"))
134 filter = open(self.filterFileName, "a")
135 filter.write("some fields without the key trigger string\n")
137 self.assertEquals(["NODE1-1_0"], processvelvet.getFilterList(self.filterFileName))
139 filter = open(self.filterFileName, "a")
140 filter.write("0\t1\t2\t3\t4\t5\t6\t7\t8\tNODEAnything\n")
142 self.assertEquals(["NODE1-1_0", "NODEAnything"], processvelvet.getFilterList(self.filterFileName))
144 filter = open(self.filterFileName, "a")
145 filter.write("0\tNODEWrongField\n")
147 self.assertEquals(["NODE1-1_0", "NODEAnything"], processvelvet.getFilterList(self.filterFileName))
149 filter = open(self.filterFileName, "a")
150 filter.write("0\t1\t2\t3\t4\t5\t6\t7\t8\tNODEAnything\n")
152 self.assertEquals(["NODE1-1_0", "NODEAnything"], processvelvet.getFilterList(self.filterFileName))
155 def testWriteNode(self):
156 node = {"contigPrefix": "chr",
161 counts = {"acceptedSize": 0,
163 "contigsAccepted": 0,
169 outfile = open(self.outFileName, "w")
170 processvelvet.writeNode(outfile, node, filterList, counts, minSize=0, keepCoverage=False)
172 results = open(self.outFileName)
173 self.assertEquals("", results.readline())
175 os.remove(self.outFileName)
177 node["completeID"] = "<5"
178 node["currentSeq"] = "GATTACA\n"
179 outfile = open(self.outFileName, "w")
180 processvelvet.writeNode(outfile, node, filterList, counts, minSize=0, keepCoverage=False)
181 self.assertEquals(counts["filteredSize"], 7)
182 counts["filteredSize"] = 0
184 results = open(self.outFileName)
185 self.assertEquals("", results.readline())
187 os.remove(self.outFileName)
189 node["completeID"] = "NODE1_1"
190 node["currentSeq"] = "GATTACA\n"
191 filterList = ["NODE1_1"]
192 outfile = open(self.outFileName, "w")
193 processvelvet.writeNode(outfile, node, filterList, counts, minSize=0, keepCoverage=False)
194 self.assertEquals(counts["filteredSize"], 7)
195 counts["filteredSize"] = 0
197 results = open(self.outFileName)
198 self.assertEquals("", results.readline())
200 os.remove(self.outFileName)
202 node["completeID"] = "NODE1_1"
203 node["currentSeq"] = "GATTACA\n"
205 outfile = open(self.outFileName, "w")
206 processvelvet.writeNode(outfile, node, filterList, counts, minSize=0, keepCoverage=False)
207 self.assertEquals(counts["acceptedSize"], 7)
209 results = open(self.outFileName)
210 self.assertEquals(">chr1\n", results.readline())
211 self.assertEquals("GATTACA\n", results.readline())
212 self.assertEquals("", results.readline())
214 os.remove(self.outFileName)
218 argv = ["processVelvet", self.inFileName, self.outFileName]
219 processvelvet.main(argv)
220 outfile = open(self.outFileName)
222 self.assertEquals("", line)
224 os.remove(self.outFileName)
228 suite = unittest.TestSuite()
229 suite.addTest(unittest.makeSuite(TestProcessVelvet))
234 if __name__ == "__main__":
235 #import sys;sys.argv = ['', 'Test.testName']