18
|
1 #!/usr/bin/env python
|
|
2
|
|
3 import sys
|
|
4 import getopt
|
|
5
|
|
6
|
|
7 def help():
|
|
8 print
|
|
9 print "usage: blast2align.py [ options ]"
|
|
10 print "options:"
|
|
11 print " -h: this help"
|
|
12 print " -i: input file name (format=tabulated BLAST)"
|
|
13 print " -o: output file name (format=align, default=inFileName+'.align')"
|
|
14 print
|
|
15
|
|
16
|
|
17 def blast2align( inFile, outFile ):
|
|
18 inFileHandler = open( inFile, "r" )
|
|
19 outFileHandler = open( outFile, "w" )
|
|
20 while True:
|
|
21 line = inFileHandler.readline()
|
|
22 if line == "":
|
|
23 break
|
|
24 if line[0] != "#":
|
|
25 data = line.split("\t")
|
|
26 qryName = data[0]
|
|
27 sbjName = data[1]
|
|
28 percId = data[2]
|
|
29 qryStart = data[6]
|
|
30 qryEnd = data[7]
|
|
31 sbjStart = data[8]
|
|
32 sbjEnd = data[9]
|
|
33 Eval = data[10]
|
|
34 bitScore = data[11][:-1]
|
|
35 string = "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n" % ( qryName, qryStart, qryEnd, sbjName, sbjStart, sbjEnd, Eval, bitScore, percId )
|
|
36 outFileHandler.write( string )
|
|
37 inFileHandler.close()
|
|
38 outFileHandler.close()
|
|
39
|
|
40
|
|
41 def main():
|
|
42 inFileName = ""
|
|
43 outFileName = ""
|
|
44
|
|
45 try:
|
|
46 opts, args = getopt.getopt(sys.argv[1:],"hi:o:")
|
|
47 except getopt.GetoptError, err:
|
|
48 sys.stderr.write( "%s\n" % str(err) )
|
|
49 help()
|
|
50 sys.exit(1)
|
|
51 for o,a in opts:
|
|
52 if o == "-h":
|
|
53 help()
|
|
54 sys.exit(0)
|
|
55 elif o == "-i":
|
|
56 inFileName = a
|
|
57 elif o == "-o":
|
|
58 outFileName = a
|
|
59
|
|
60 if inFileName == "":
|
|
61 msg = "ERROR: missing input file name (-i)"
|
|
62 sys.stderr.write( "%s\n" % msg )
|
|
63 help()
|
|
64 sys.exit(1)
|
|
65
|
|
66 if outFileName == "":
|
|
67 outFileName = inFileName + ".align"
|
|
68
|
|
69 blast2align( inFileName, outFileName )
|
|
70
|
|
71 return 0
|
|
72
|
|
73
|
|
74 if __name__ == "__main__":
|
|
75 main()
|