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

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
1 import os
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
2 import sys
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
3 import unittest
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
4 import pyRepet.seq.fastaDB
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
5 from sets import Set
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
6 import ConfigParser
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
7 from pyRepet.launcher.programLauncher import *
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
8 from pyRepet.launcher.Launcher import HmmpfamAndParse2alignLauncher
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
9 from pyRepet.sql.RepetJobMySQL import *
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
10 from pyRepet.util.file.FileUtils import *
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
11 import commons.pyRepetUnit.dbSplit.LauncherDbSplit
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
12 import commons.pyRepetUnit.align.hmmOutputParsing.HmmpfamOutput2align
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
13
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
14 CONFIG_FILE = "datas/configTestAcceptanceHmmpfamAndParse2alignLauncherInparallel.cfg"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
15 CURRENT_DIR = os.getcwd()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
16
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
17 class TestAcceptanceHmmpfamLauncherAndParse2alignInparallel(unittest.TestCase):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
18
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
19 def setUp(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
20 self._config = ConfigParser.ConfigParser()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
21 self._config.readfp( open(CONFIG_FILE) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
22 self._batchFilesList = []
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
23 self._batchFilesBatchesList = []
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
24 self._inputFile = self._config.get("dbSplit_config", "input_file")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
25 self._programLauncherInstance = programLauncher()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
26 self._outputFileNotInparallel = self._config.get("hmmer_config", "output_file")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
27 self._hmmpfamOutput2align = commons.pyRepetUnit.align.hmmOutputParsing.HmmpfamOutput2align.HmmpfamOutput2align()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
28 os.chdir(CURRENT_DIR)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
29
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
30 def _launchHmmpfamAndParseNotInParallel(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
31 self._programLauncherInstance.reset(self._inputFile)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
32 self._programLauncherInstance.setOutputFileName(self._outputFileNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
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"))
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
34 self._hmmpfamOutput2align.setInputFile(self._outputFileNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
35 self._outputFileParsingNotInparallel = self._config.get("hmmpfam2align_config", "output_file")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
36 self._hmmpfamOutput2align.setOutputFile(self._outputFileParsingNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
37 self._hmmpfamOutput2align.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
38
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
39
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
40 def _countNblinesInAllResultsFilesInParallel(self, fileUtils):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
41 result_dir = self._config.get("hmmer_config", "result_dir")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
42 dirFiles = fileUtils.listFilesInDir(result_dir)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
43 listPath = []
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
44 for file in dirFiles:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
45 listPath.append(file)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
46
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
47 nbLinesInAlignFilesInparallel = fileUtils.countLinesInFiles(listPath)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
48 return nbLinesInAlignFilesInparallel
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
49
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
50
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
51 def _launchHmmpfamAndParseInParallel(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
52 user = self._config.get("db_config", "user")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
53 host = self._config.get("db_config", "host")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
54 passwd = self._config.get("db_config", "passwd")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
55 dbName = self._config.get("db_config", "dbname")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
56 jobDb = RepetJob(user, host, passwd, dbName)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
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" : "."}
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
58 self.hmmpfamAndParse2align = HmmpfamAndParse2alignLauncher(jobDb, params)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
59 self.hmmpfamAndParse2align.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
60
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
61
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
62 def _splitInputFile(self, dbSplit):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
63 dbSplit.setInFileName(self._inputFile)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
64 dbSplit.setIsNewDir(True)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
65 dbSplit.setNbSequences(3)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
66 dbSplit.run()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
67
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
68 def testAcceptanceHmmpfamAndParse2alignHasRunInparallel (self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
69
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
70 dbSplit = commons.pyRepetUnit.dbSplit.LauncherDbSplit.LauncherDbSplit()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
71 self._splitInputFile(dbSplit)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
72 self._launchHmmpfamAndParseInParallel()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
73 fileUtils = FileUtils()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
74 nbLinesInAlignFilesInparallel = self._countNblinesInAllResultsFilesInParallel(fileUtils)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
75 dbSplit.clean()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
76 self._launchHmmpfamAndParseNotInParallel()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
77 nbLinesInAlignFileNotInparallel = fileUtils.countLinesInAFile(self._outputFileParsingNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
78 self.assertEqual(nbLinesInAlignFilesInparallel,nbLinesInAlignFileNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
79 self._clean()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
80
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
81 def _clean(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
82
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
83 dirToClean = self._config.get( "hmmer_config", "tmp_dir" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
84 os.system("rm " + dirToClean + "/*")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
85 dirToClean = self._config.get( "hmmer_config", "result_dir" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
86 os.system("rm " + dirToClean + "/*")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
87 os.system("rm HmmpfamJob*.e*")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
88 os.system("rm HmmpfamJob*.o*")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
89 os.remove(self._outputFileNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
90 os.remove(self._outputFileParsingNotInparallel)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
91
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
92
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
93 if __name__ == "__main__":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
94 unittest.main()