18
|
1 import re
|
|
2 from commons.pyRepetUnit.hmmer.hmmOutput.HmmOutput import HmmOutput
|
|
3 from commons.pyRepetUnit.hmmer.hmmOutput.HmmOutputProcessing import HmmOutputProcessing
|
|
4
|
|
5 ##Concrete implementation for hmmscan output specific methods
|
|
6 #
|
|
7 class HmmscanOutputProcessing (HmmOutputProcessing):
|
|
8
|
|
9 ## read an hmmscan output from a file, return a array with results useful to build a .align file
|
|
10 #
|
|
11 # @param file handle of file generated by software searching hmm profiles
|
|
12 #
|
|
13 def readHmmOutput( self, hmmerOutputFile ):
|
|
14 #Tested with HMMER 3 on Linux
|
|
15 line = hmmerOutputFile.readline()
|
|
16 tabResult = None
|
|
17 if (line == ""):
|
|
18 tabResult = None
|
|
19 return tabResult
|
|
20 tabResult = HmmOutput()
|
|
21
|
|
22 while line != "":
|
|
23 line = hmmerOutputFile.readline()
|
|
24 if not(re.match("^#.*$", line)) and line != "":
|
|
25 lLines = re.split("\s+", line)
|
|
26 seqName = lLines[3]
|
|
27 profilName = lLines[0]
|
|
28 iValue = lLines[12]
|
|
29 score = lLines[13]
|
|
30 queryCoordStart =lLines[17]
|
|
31 queryCoordEnd = lLines[18]
|
|
32 subjectCoordStart = lLines[15]
|
|
33 subjectCoordEnd = lLines[16]
|
|
34 tabResult.append([seqName, queryCoordStart, queryCoordEnd, profilName, subjectCoordStart, subjectCoordEnd, iValue, score])
|
|
35 return tabResult
|
|
36
|