comparison commons/pyRepetUnit/hmmer/tests/TestAcceptanceHmmpfamAndParse2alignInparallel.py @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
comparison
equal deleted inserted replaced
30:5677346472b5 31:0ab839023fe4
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()