18
|
1 import unittest
|
|
2 import os
|
|
3 import shutil
|
|
4 import ConfigParser
|
|
5 import sys
|
|
6 from commons.pyRepetUnit.blastnForClassifierStep1.RepbaseBLRnForClassifierStep1 import RepbaseBLRnForClassifierStep1
|
|
7 from commons.core.utils.FileUtils import FileUtils
|
|
8 from commons.core.sql.DbFactory import DbFactory
|
|
9 from commons.core.sql.TablePathAdaptator import TablePathAdaptator
|
|
10 from commons.core.coord.Path import Path
|
|
11 import pyRepet.launcher.programLauncher
|
|
12
|
|
13 if not os.environ.has_key( "REPET_PATH" ):
|
|
14 print "*** Error: no environment variable REPET_PATH"
|
|
15 sys.exit(1)
|
|
16 sys.path.append( os.environ["REPET_PATH"] )
|
|
17
|
|
18 NB_EXPECTED_LINES_IN_PATH_FILE = 10
|
|
19 CURRENT_DIR = os.getcwd()
|
|
20
|
|
21
|
|
22 class Test_RepbaseBLRnForClassifierStep1( unittest.TestCase ):
|
|
23
|
|
24
|
|
25 def setUp( self ):
|
|
26 os.chdir(CURRENT_DIR)
|
|
27 self._inFileName = "dummyFileName"
|
|
28 self._launch_1 = "log = os.system( \""
|
|
29 self._launch_2 = "\" )\n"
|
|
30 self._launch_2 += "if log != 0:\n"
|
|
31 self._launch_2 += "\tsys.exit(1)\n"
|
|
32 self._cDir = "/home/user/dummy_cdir"
|
|
33 self._tmpDir = "/home/user/dummy_tmpDir"
|
|
34 self._configFileName = "configFile"
|
|
35 self._repbaseName = "dummyRepbase_nt.fa"
|
|
36 f = open(self._configFileName, "w")
|
|
37 f.write("[repet_env]\n")
|
|
38 f.write("repet_host: %s\n" % os.environ["REPET_HOST"])
|
|
39 f.write("repet_user: %s\n" % os.environ["REPET_USER"])
|
|
40 f.write("repet_pw: %s\n" % os.environ["REPET_PW"])
|
|
41 f.write("repet_db: %s\n" % os.environ["REPET_DB"])
|
|
42 f.write("repet_port: %s\n" % os.environ["REPET_PORT"])
|
|
43 f.write("[detect_features]\n")
|
|
44 f.write("TE_BLRn: yes\n")
|
|
45 f.write("TE_nucl_bank: %s\n" % self._repbaseName)
|
|
46 f.write("wublast: yes\n")
|
|
47 f.close()
|
|
48 self._verbose = 0
|
|
49 self._config = ConfigParser.ConfigParser()
|
|
50 self._config.readfp( open(self._configFileName) )
|
|
51 self._pL = pyRepet.launcher.programLauncher.programLauncher()
|
|
52 self._project = "dummyProject"
|
|
53 self._repbaseBLRn = RepbaseBLRnForClassifierStep1(self._inFileName, self._launch_1, self._launch_2, self._cDir, self._tmpDir, self._configFileName, self._verbose, self._pL, self._project)
|
|
54 self._expFileName = "expFile"
|
|
55 self._bank = self._config.get("detect_features","TE_nucl_bank")
|
|
56 self._db = DbFactory.createInstance()
|
|
57
|
|
58
|
|
59 def tearDown( self ):
|
|
60 self._db.dropTable("%s_TE_BLRn_path" % (self._project))
|
|
61 os.chdir(CURRENT_DIR)
|
|
62 self._repbaseBLRn = None
|
|
63 os.remove(self._configFileName)
|
|
64 if os.path.isfile("%s_BLRn_%s.align.clean_match.path" % (self._project, self._bank)):
|
|
65 os.remove("%s_BLRn_%s.align.clean_match.path" % (self._project, self._bank))
|
|
66 if os.path.isfile("%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank)):
|
|
67 os.remove("%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank))
|
|
68 if os.path.isfile("batch_1.fa_BLRn_%s.*" % (self._bank)):
|
|
69 os.remove("batch_1.fa_BLRn_%s.*" % (self._bank))
|
|
70 if os.path.isfile("batch_2.fa_BLRn_%s.*" % (self._bank)):
|
|
71 os.remove("batch_2.fa_BLRn_%s.*" % (self._bank))
|
|
72 if os.path.isfile("batch_1.fa_BLRn_%s.align.clean_match.path" % (self._bank)):
|
|
73 os.remove("batch_1.fa_BLRn_%s.align.clean_match.path" % (self._bank))
|
|
74 if os.path.isfile("batch_2.fa_BLRn_%s.align.clean_match.path" % (self._bank)):
|
|
75 os.remove("batch_2.fa_BLRn_%s.align.clean_match.path" % (self._bank))
|
|
76 if os.path.isfile(self._repbaseName):
|
|
77 os.remove(self._repbaseName)
|
|
78 os.remove(self._repbaseName + "_cut")
|
|
79 os.remove(self._repbaseName + "_cut.xnd")
|
|
80 os.remove(self._repbaseName + "_cut.xns")
|
|
81 os.remove(self._repbaseName + "_cut.xnt")
|
|
82 os.remove(self._repbaseName + ".Nstretch.map")
|
|
83 os.remove("last_time_stamp.log")
|
|
84 if os.path.isdir( "TE_BLRn" ):
|
|
85 os.chdir( "TE_BLRn" )
|
|
86 os.chdir(CURRENT_DIR)
|
|
87 shutil.rmtree("TE_BLRn")
|
|
88 if os.path.isfile(self._expFileName):
|
|
89 os.remove(self._expFileName)
|
|
90
|
|
91
|
|
92 def test_formatRepbase_ntIfNecessaryWithoutLog( self ):
|
|
93 f = open(self._repbaseName, "w")
|
|
94 f.write(">seq1\n")
|
|
95 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
96 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
97 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
98 f.write(">seq2\n")
|
|
99 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
100 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
101 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
102 f.close()
|
|
103 f = open(self._expFileName, "w")
|
|
104 f.write(">1 seq1 {Cut} 1..180\n")
|
|
105 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
106 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
107 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
108 f.write(">2 seq2 {Cut} 1..180\n")
|
|
109 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
110 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
111 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
112 f.close()
|
|
113 self._repbaseBLRn.formatRepbase_ntIfNecessary()
|
|
114 obsFileName = self._repbaseName + "_cut"
|
|
115 self.assertTrue(FileUtils.are2FilesIdentical(self._expFileName, obsFileName))
|
|
116
|
|
117
|
|
118 def test_formatRepbase_ntIfNecessary_withLogFile( self ):
|
|
119 f = open(self._repbaseName, "w")
|
|
120 f.write(">seq1\n")
|
|
121 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
122 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
123 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
124 f.write(">seq2\n")
|
|
125 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
126 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
127 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
128 f.close()
|
|
129 f = open(self._expFileName, "w")
|
|
130 f.write(">1 seq1 {Cut} 1..180\n")
|
|
131 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
132 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
133 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
134 f.write(">2 seq2 {Cut} 1..180\n")
|
|
135 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
136 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTTTTTTTGCGCGTGGCGTATGCGTGCAT\n")
|
|
137 f.write("ATGCGTGCGTAAATGCGTAATGCGTAAATGCGTAAATTTGCGCGTAAAGTATGCGTGCAT\n")
|
|
138 f.close()
|
|
139 repbaseBLRnWithLog = RepbaseBLRnForClassifierStep1(self._inFileName, self._launch_1, self._launch_2, self._cDir, self._tmpDir, self._configFileName, self._verbose, self._pL, self._project)
|
|
140 repbaseBLRnWithLog.formatRepbase_ntIfNecessary()
|
|
141 obsFileName = self._repbaseName + "_cut"
|
|
142 self.assertTrue(FileUtils.are2FilesIdentical(self._expFileName, obsFileName))
|
|
143
|
|
144
|
|
145 def test_createCmdToLaunch( self ):
|
|
146 bank = self._config.get("detect_features","TE_nucl_bank")
|
|
147 obsCmd = self._repbaseBLRn.createCmdToLaunch()
|
|
148 expCmd = self._launch_1 + os.environ["REPET_PATH"] + "/bin/blaster"
|
|
149 expCmd += " -q %s" % ( self._inFileName )
|
|
150 expCmd += " -s %s/%s" % ( self._cDir, bank )
|
|
151 expCmd += " -B %s_BLRn_%s" % ( self._inFileName, bank )
|
|
152 expCmd += " -n blastn"
|
|
153 if self._config.get("detect_features","wublast") == "yes":
|
|
154 expCmd += " -W"
|
|
155 expCmd += " -r"
|
|
156 expCmd += " -v 1"
|
|
157 expCmd += self._launch_2
|
|
158 expCmd += "if not os.path.exists( \"%s/%s_BLRn_%s.param\" ):\n" % ( self._cDir, self._inFileName, bank )
|
|
159 expCmd += "\tos.system( \"mv %s_BLRn_%s.param %s\" )\n" % ( self._inFileName, bank, self._cDir )
|
|
160 expCmd += "if os.path.exists( \"%s_cut\" ):\n" % ( self._inFileName )
|
|
161 expCmd += "\tos.system( \"rm -f %s_cut*\" )\n" % ( self._inFileName )
|
|
162 expCmd += "if os.path.exists( \"%s.Nstretch.map\" ):\n" % ( self._inFileName )
|
|
163 expCmd += "\tos.remove( \"%s.Nstretch.map\" )\n" % ( self._inFileName )
|
|
164 expCmd += "if os.path.exists( \"%s_BLRn_%s.raw\" ):\n" % ( self._inFileName, bank )
|
|
165 expCmd += "\tos.remove( \"%s_BLRn_%s.raw\" )\n" % ( self._inFileName, bank )
|
|
166 expCmd += "if os.path.exists( \"%s_BLRn_%s.seq_treated\" ):\n" % ( self._inFileName, bank )
|
|
167 expCmd += "\tos.remove( \"%s_BLRn_%s.seq_treated\" )\n" % ( self._inFileName, bank )
|
|
168 expCmd += self._launch_1
|
|
169 expCmd += os.environ["REPET_PATH"] + "/bin/matcher"
|
|
170 expCmd += " -m %s_BLRn_%s.align" % ( self._inFileName, bank )
|
|
171 expCmd += " -q %s" % ( self._inFileName )
|
|
172 expCmd += " -s %s/%s" % ( self._cDir, bank )
|
|
173 expCmd += " -j"
|
|
174 expCmd += " -v 1"
|
|
175 expCmd += self._launch_2
|
|
176 expCmd += "if not os.path.exists( \"%s/%s_BLRn_%s.align.clean_match.path\" ):\n" % ( self._cDir, self._inFileName, bank )
|
|
177 expCmd += "\tos.system( \"mv %s_BLRn_%s.align.clean_match.path %s\" )\n" % ( self._inFileName, bank, self._cDir )
|
|
178 expCmd += "if not os.path.exists( \"%s/%s_BLRn_%s.align.clean_match.param\" ):\n" % ( self._cDir, self._inFileName, bank )
|
|
179 expCmd += "\tos.system( \"mv %s_BLRn_%s.align.clean_match.param %s\" )\n" % ( self._inFileName, bank, self._cDir )
|
|
180 expCmd += "if os.path.exists( \"%s_BLRn_%s.align\" ):\n" % ( self._inFileName, bank )
|
|
181 expCmd += "\tos.remove( \"%s_BLRn_%s.align\" )\n" % ( self._inFileName, bank )
|
|
182 expCmd += "if os.path.exists( \"%s_BLRn_%s.align.clean_match.fa\" ):\n" % ( self._inFileName, bank )
|
|
183 expCmd += "\tos.remove( \"%s_BLRn_%s.align.clean_match.fa\" )\n" % ( self._inFileName, bank )
|
|
184 expCmd += "if os.path.exists( \"%s_BLRn_%s.align.clean_match.map\" ):\n" % ( self._inFileName, bank )
|
|
185 expCmd += "\tos.remove( \"%s_BLRn_%s.align.clean_match.map\" )\n" % ( self._inFileName, bank )
|
|
186 expCmd += "if os.path.exists( \"%s_BLRn_%s.align.clean_match.tab\" ):\n" % ( self._inFileName, bank )
|
|
187 expCmd += "\tos.remove( \"%s_BLRn_%s.align.clean_match.tab\" )\n" % ( self._inFileName, bank )
|
|
188 if self._tmpDir != self._cDir:
|
|
189 expCmd += "if os.path.exists( \"%s\" ):\n" % ( bank )
|
|
190 expCmd += "\tos.remove( \"%s\" )\n" % ( bank )
|
|
191 self.assertEquals( expCmd, obsCmd )
|
|
192
|
|
193
|
|
194 def test_concatPathFile( self ):
|
|
195 os.chdir(CURRENT_DIR)
|
|
196 if not FileUtils.isRessourceExists("TE_BLRn"):
|
|
197 os.mkdir( "TE_BLRn" )
|
|
198 self._createPathFiles(self._bank)
|
|
199 os.chdir( "TE_BLRn" )
|
|
200 f = open(self._expFileName, "w")
|
|
201 f.write("1\tQueryName1\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
202 f.write("2\tQueryName1\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
203 f.write("3\tQueryName2\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
204 f.write("4\tQueryName3\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
205 f.write("5\tQueryName1\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
206 f.write("1\tQueryName4\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
207 f.write("2\tQueryName4\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
208 f.write("3\tQueryName5\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
209 f.write("4\tQueryName6\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
210 f.write("5\tQueryName7\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
211 f.close()
|
|
212 FileUtils.sortFileContent(self._expFileName)
|
|
213 obsFileName = "%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank)
|
|
214 self._repbaseBLRn._concatPathFile(self._bank)
|
|
215 FileUtils.sortFileContent(obsFileName)
|
|
216 self.assertTrue(FileUtils.are2FilesIdentical(self._expFileName, obsFileName))
|
|
217
|
|
218
|
|
219 def test_adaptIDInPathFile( self ):
|
|
220 f = open("%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank), "w")
|
|
221 f.write("1\tQueryName1\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
222 f.write("2\tQueryName1\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
223 f.write("3\tQueryName2\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
224 f.write("4\tQueryName3\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
225 f.write("5\tQueryName1\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
226 f.write("1\tQueryName4\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
227 f.write("2\tQueryName4\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
228 f.write("3\tQueryName5\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
229 f.write("4\tQueryName6\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
230 f.write("5\tQueryName7\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
231 f.close()
|
|
232 self._repbaseBLRn._adaptIDInPathFile(self._bank)
|
|
233 f = open(self._expFileName, "w")
|
|
234 f.write("1\tQueryName1\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
235 f.write("2\tQueryName1\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
236 f.write("3\tQueryName2\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
237 f.write("4\tQueryName3\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
238 f.write("5\tQueryName1\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
239 f.write("6\tQueryName4\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
240 f.write("7\tQueryName4\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
241 f.write("8\tQueryName5\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
242 f.write("9\tQueryName6\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
243 f.write("10\tQueryName7\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
244 f.close()
|
|
245 obsFileName = "%s_BLRn_%s.align.clean_match.path" % (self._project, self._bank)
|
|
246 self.assertTrue(FileUtils.are2FilesIdentical(self._expFileName, obsFileName))
|
|
247
|
|
248
|
|
249 def test_loadPathFileInTable( self ):
|
|
250 os.chdir(CURRENT_DIR)
|
|
251 if not FileUtils.isRessourceExists("TE_BLRn"):
|
|
252 os.mkdir( "TE_BLRn" )
|
|
253 self._createPathFiles(self._bank)
|
|
254 os.chdir( "TE_BLRn" )
|
|
255 f = open("%s_BLRn_%s.align.clean_match.path" % (self._project, self._bank), "w")
|
|
256 f.write("1\tQueryName1\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
257 f.write("2\tQueryName1\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
258 f.write("3\tQueryName2\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
259 f.write("4\tQueryName3\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
260 f.write("5\tQueryName1\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
261 f.write("6\tQueryName4\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
262 f.write("7\tQueryName4\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
263 f.write("8\tQueryName5\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
264 f.write("9\tQueryName6\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
265 f.write("10\tQueryName7\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
266 f.close()
|
|
267 self._repbaseBLRn._loadPathFileInTable(self._bank)
|
|
268 resultFromFilePathList = self._readPathResultsFromFileAndFillList()
|
|
269 resultFromTablePathList = self._readPathResultsFromTableAndFillList()
|
|
270 self.assertEquals(resultFromFilePathList, resultFromTablePathList)
|
|
271
|
|
272
|
|
273 def test_findAndRemoveUselessFiles( self ):
|
|
274 self._createFile("%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank))
|
|
275 self._createFile("batch_1.fa_BLRn_%s.*" % (self._bank))
|
|
276 self._createFile("batch_2.fa_BLRn_%s.*" % (self._bank))
|
|
277 self._repbaseBLRn._findAndRemoveUselessFiles(self._bank)
|
|
278 self.assertFalse(FileUtils.isRessourceExists("%s_BLRn_%s.align.clean_match.path.tmp" % (self._project, self._bank)))
|
|
279 self.assertFalse(FileUtils.isRessourceExists("batch_1.fa_BLRn_%s.*" % (self._bank)))
|
|
280 self.assertFalse(FileUtils.isRessourceExists("batch_2.fa_BLRn_%s.*" % (self._bank)))
|
|
281
|
|
282
|
|
283 def test_collectRepbaseBLRn( self ):
|
|
284 os.chdir(CURRENT_DIR)
|
|
285 if not FileUtils.isRessourceExists("TE_BLRn"):
|
|
286 os.mkdir( "TE_BLRn" )
|
|
287 self._createPathFiles(self._bank)
|
|
288 os.chdir( "TE_BLRn" )
|
|
289 self._repbaseBLRn.collectRepbaseBLRn()
|
|
290 self.assertTrue(FileUtils.isRessourceExists("%s_BLRn_%s.align.clean_match.path" % ( self._project, self._bank )))
|
|
291 self.assertEquals(NB_EXPECTED_LINES_IN_PATH_FILE, FileUtils.getNbLinesInSingleFile("%s_BLRn_%s.align.clean_match.path" % ( self._project, self._bank )))
|
|
292 self.assertTrue(self._db.doesTableExist("%s_TE_BLRn_path" % (self._project)))
|
|
293 self._db.execute('select * from %s_TE_BLRn_path' % (self._project))
|
|
294 self.assertEquals(NB_EXPECTED_LINES_IN_PATH_FILE, len(self._db.fetchall()))
|
|
295 self._db.dropTable("%s_TE_BLRn_path" % (self._project))
|
|
296
|
|
297
|
|
298 def _createPathFiles( self, bankFull ):
|
|
299 bank = os.path.split(bankFull)[1]
|
|
300 fileName = "batch_1.fa_BLRn_" + bank + ".align.clean_match.path"
|
|
301 f = open(fileName, "w")
|
|
302 f.write("1\tQueryName1\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
303 f.write("2\tQueryName1\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
304 f.write("3\tQueryName2\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
305 f.write("4\tQueryName3\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
306 f.write("5\tQueryName1\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
307 f.close()
|
|
308 fileName = "batch_2.fa_BLRn_" + bank + ".align.clean_match.path"
|
|
309 f = open(fileName, "w")
|
|
310 f.write("1\tQueryName4\t2\t250\tsubjectName1\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
311 f.write("2\tQueryName4\t255\t550\tsubjectName2\t5\t255\t0.0002\t32\t78.2\n")
|
|
312 f.write("3\tQueryName5\t1\t150\tsubjectName1\t250\t400\t5.1e-59\t132\t98\n")
|
|
313 f.write("4\tQueryName6\t2\t250\tsubjectName3\t5\t255\t4.1e-39\t132\t88.2\n")
|
|
314 f.write("5\tQueryName7\t300\t450\tsubjectName1\t300\t450\t4.1e-39\t132\t80.2\n")
|
|
315 f.close()
|
|
316
|
|
317
|
|
318 def _readPathResultsFromTableAndFillList( self ):
|
|
319 tablePathAdaptatorInstance = TablePathAdaptator (self._db, "%s_TE_BLRn_path" % (self._project))
|
|
320 pathList = tablePathAdaptatorInstance.getListOfAllPaths()
|
|
321 return pathList
|
|
322
|
|
323
|
|
324 def _readPathResultsFromFileAndFillList( self ):
|
|
325 pathInstance = Path()
|
|
326 pathList = []
|
|
327 f = open( "%s_BLRn_%s.align.clean_match.path" % (self._project, self._bank) , "r")
|
|
328 while pathInstance.read( f ):
|
|
329 pathList.append(pathInstance)
|
|
330 pathInstance = Path()
|
|
331 f.close()
|
|
332 return pathList
|
|
333
|
|
334
|
|
335 def _createFile( self, nameFile ):
|
|
336 f = open(nameFile, "w")
|
|
337 f.close()
|
|
338
|
|
339
|
|
340 test_suite = unittest.TestSuite()
|
|
341 test_suite.addTest( unittest.makeSuite( Test_RepbaseBLRnForClassifierStep1 ) )
|
|
342 if __name__ == "__main__":
|
|
343 unittest.TextTestRunner(verbosity=2).run( test_suite )
|