18
|
1 import os
|
|
2 import sys
|
|
3 import unittest
|
|
4 import pyRepet.seq.fastaDB
|
|
5 from sets import Set
|
|
6 import ConfigParser
|
|
7 from pyRepet.launcher.programLauncher import *
|
|
8 from pyRepet.launcher.Launcher import HmmpfamAndParse2alignLauncher
|
|
9 from pyRepet.sql.RepetJobMySQL import *
|
|
10 from pyRepet.util.file.FileUtils import *
|
|
11 import commons.pyRepetUnit.dbSplit.LauncherDbSplit
|
|
12 import commons.pyRepetUnit.align.hmmOutputParsing.HmmpfamOutput2align
|
|
13
|
|
14 CONFIG_FILE = "datas/configTestAcceptanceHmmpfamAndParse2alignLauncherInparallel.cfg"
|
|
15 CURRENT_DIR = os.getcwd()
|
|
16
|
|
17 class TestAcceptanceHmmpfamLauncherAndParse2alignInparallel(unittest.TestCase):
|
|
18
|
|
19 def setUp(self):
|
|
20 self._config = ConfigParser.ConfigParser()
|
|
21 self._config.readfp( open(CONFIG_FILE) )
|
|
22 self._batchFilesList = []
|
|
23 self._batchFilesBatchesList = []
|
|
24 self._inputFile = self._config.get("dbSplit_config", "input_file")
|
|
25 self._programLauncherInstance = programLauncher()
|
|
26 self._outputFileNotInparallel = self._config.get("hmmer_config", "output_file")
|
|
27 self._hmmpfamOutput2align = commons.pyRepetUnit.align.hmmOutputParsing.HmmpfamOutput2align.HmmpfamOutput2align()
|
|
28 os.chdir(CURRENT_DIR)
|
|
29
|
|
30 def _launchHmmpfamAndParseNotInParallel(self):
|
|
31 self._programLauncherInstance.reset(self._inputFile)
|
|
32 self._programLauncherInstance.setOutputFileName(self._outputFileNotInparallel)
|
|
33 self._programLauncherInstance.launchHmmpfam(evalFilter=self._config.get("profil_search", "Evalue"), inputFormat=self._config.get("profil_search", "InputFormat"), profilDatabank=self._config.get("profil_search", "ProfilDatabank"))
|
|
34 self._hmmpfamOutput2align.setInputFile(self._outputFileNotInparallel)
|
|
35 self._outputFileParsingNotInparallel = self._config.get("hmmpfam2align_config", "output_file")
|
|
36 self._hmmpfamOutput2align.setOutputFile(self._outputFileParsingNotInparallel)
|
|
37 self._hmmpfamOutput2align.run()
|
|
38
|
|
39
|
|
40 def _countNblinesInAllResultsFilesInParallel(self, fileUtils):
|
|
41 result_dir = self._config.get("hmmer_config", "result_dir")
|
|
42 dirFiles = fileUtils.listFilesInDir(result_dir)
|
|
43 listPath = []
|
|
44 for file in dirFiles:
|
|
45 listPath.append(file)
|
|
46
|
|
47 nbLinesInAlignFilesInparallel = fileUtils.countLinesInFiles(listPath)
|
|
48 return nbLinesInAlignFilesInparallel
|
|
49
|
|
50
|
|
51 def _launchHmmpfamAndParseInParallel(self):
|
|
52 user = self._config.get("db_config", "user")
|
|
53 host = self._config.get("db_config", "host")
|
|
54 passwd = self._config.get("db_config", "passwd")
|
|
55 dbName = self._config.get("db_config", "dbname")
|
|
56 jobDb = RepetJob(user, host, passwd, dbName)
|
|
57 params = {"param": "--informat " + self._config.get("profil_search", "InputFormat") + " -E " + self._config.get("profil_search", "Evalue"), "profilDB": self._config.get("profil_search", "ProfilDatabank"), "outputDir": self._config.get("hmmer_config", "result_dir"), "query": self._config.get("hmmer_config", "query_dir"), "job_table": "jobs", "queue": self._config.get("sge_config", "queue"), "groupid": self._config.get("sge_config", "groupid"), "tmpDir": self._config.get("hmmer_config", "tmp_dir"), "scriptToLaunch": self._config.get("parse_config", "scriptToLaunch"), "cDir" : "."}
|
|
58 self.hmmpfamAndParse2align = HmmpfamAndParse2alignLauncher(jobDb, params)
|
|
59 self.hmmpfamAndParse2align.run()
|
|
60
|
|
61
|
|
62 def _splitInputFile(self, dbSplit):
|
|
63 dbSplit.setInFileName(self._inputFile)
|
|
64 dbSplit.setIsNewDir(True)
|
|
65 dbSplit.setNbSequences(3)
|
|
66 dbSplit.run()
|
|
67
|
|
68 def testAcceptanceHmmpfamAndParse2alignHasRunInparallel (self):
|
|
69
|
|
70 dbSplit = commons.pyRepetUnit.dbSplit.LauncherDbSplit.LauncherDbSplit()
|
|
71 self._splitInputFile(dbSplit)
|
|
72 self._launchHmmpfamAndParseInParallel()
|
|
73 fileUtils = FileUtils()
|
|
74 nbLinesInAlignFilesInparallel = self._countNblinesInAllResultsFilesInParallel(fileUtils)
|
|
75 dbSplit.clean()
|
|
76 self._launchHmmpfamAndParseNotInParallel()
|
|
77 nbLinesInAlignFileNotInparallel = fileUtils.countLinesInAFile(self._outputFileParsingNotInparallel)
|
|
78 self.assertEqual(nbLinesInAlignFilesInparallel,nbLinesInAlignFileNotInparallel)
|
|
79 self._clean()
|
|
80
|
|
81 def _clean(self):
|
|
82
|
|
83 dirToClean = self._config.get( "hmmer_config", "tmp_dir" )
|
|
84 os.system("rm " + dirToClean + "/*")
|
|
85 dirToClean = self._config.get( "hmmer_config", "result_dir" )
|
|
86 os.system("rm " + dirToClean + "/*")
|
|
87 os.system("rm HmmpfamJob*.e*")
|
|
88 os.system("rm HmmpfamJob*.o*")
|
|
89 os.remove(self._outputFileNotInparallel)
|
|
90 os.remove(self._outputFileParsingNotInparallel)
|
|
91
|
|
92
|
|
93 if __name__ == "__main__":
|
|
94 unittest.main()
|