annotate commons/tools/srptBlasterMatcher.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 #!/usr/bin/env python
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
2
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
3 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
4 This program takes a query directory as input,
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
5 then launches Blaster and/or Matcher on each file in it,
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
6 finally results are optionally gathered in a single file.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
7 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
8
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
9 import os
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
10 import sys
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
11 import getopt
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
12 import logging
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
13 import glob
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
14 import ConfigParser
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
15
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
16 from pyRepet.launcher.programLauncher import programLauncher
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
17 from pyRepet.launcher import Launcher
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
18 from pyRepet.sql.RepetJobMySQL import RepetJob
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
19 from commons.core.coord.Align import Align
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
20
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
21
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
22 def help():
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
23 print
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
24 print "usage: %s [ options ]" % ( sys.argv[0].split("/")[-1] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
25 print "options:"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
26 print " -h: this help"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
27 print " -g: name of the group identifier (same for all the jobs)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
28 print " -q: name of the query directory"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
29 print " -S: suffix in the query directory (default='*.fa' for Blaster, '*.align' for Matcher)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
30 print " -s: absolute path to the subject databank"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
31 print " -Q: resources needed on the cluster)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
32 print " -d: absolute path to the temporary directory"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
33 print " -m: mix of Blaster and/or Matcher"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
34 print " 1: launch Blaster only"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
35 print " 2: launch Matcher only (on '*.align' query files)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
36 print " 3: launch Blaster+Matcher in the same job"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
37 print " -B: parameters for Blaster (e.g. \"-a -n tblastx\")"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
38 print " -M: parameters for Matcher (e.g. \"-j\")"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
39 print " -Z: collect all the results into a single file"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
40 print " align (after Blaster)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
41 print " path/tab (after Matcher)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
42 print " -C: configuration file from TEdenovo or TEannot pipeline"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
43 print " -t: name of the table recording the jobs (default=jobs)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
44 print " -p: absolute path to project directory (if jobs management via files)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
45 print " -c: clean (remove job launch files and job stdout)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
46 print " -v: verbose (default=0/1/2)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
47 print
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
48
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
49
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
50 def filterRedundantMatches( inFile, outFile ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
51 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
52 When a pairwise alignment is launched ~ all-by-all (ie one batch against all chunks),
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
53 one filters the redundant matches. For instance we keep 'chunk3-1-100-chunk7-11-110-...'
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
54 and we discards 'chunk7-11-110-chunk3-1-100-...'.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
55 Also we keep 'chunk5-1-100-chunk5-11-110-...' and we discards
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
56 'chunk5-11-110-chunk5-1-100-...'.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
57 For this of course the results need to be sorted by query, on plus strand,
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
58 and in ascending coordinates (always the case with Blaster).
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
59 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
60 inFileHandler = open( inFile, "r" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
61 outFileHandler = open( outFile, "w" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
62 iAlign = Align()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
63 countMatches = 0
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
64 tick = 100000
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
65 while True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
66 line = inFileHandler.readline()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
67 if line == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
68 break
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
69 countMatches += 1
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
70 iAlign.setFromString( line )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
71 if "chunk" not in iAlign.range_query.seqname \
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
72 or "chunk" not in iAlign.range_subject.seqname:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
73 print "ERROR: 'chunk' not in seqname"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
74 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
75 if int(iAlign.range_query.seqname.split("chunk")[1]) < int(iAlign.range_subject.seqname.split("chunk")[1]):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
76 iAlign.write( outFileHandler )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
77 elif int(iAlign.range_query.seqname.split("chunk")[1]) == int(iAlign.range_subject.seqname.split("chunk")[1]):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
78 if iAlign.range_query.getMin() < iAlign.range_subject.getMin():
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
79 iAlign.write( outFileHandler )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
80 if countMatches % tick == 0: # need to free buffer frequently as file can be big
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
81 outFileHandler.flush()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
82 os.fsync( outFileHandler.fileno() )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
83 inFileHandler.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
84 outFileHandler.close()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
85
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
86
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
87 def runCollect( groupid, collect, allByAll ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
88 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
89 Gather the results of each job in a single job and adapt path ID if necessary.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
90 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
91 if verbose > 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
92 print "concatenate the results of each job"; sys.stdout.flush()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
93
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
94 # retrieve the list of the files
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
95 lFiles = glob.glob( "*.%s" % ( collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
96 lFiles.sort()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
97
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
98 # concatenate all the individual files
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
99 if os.path.exists( "%s.%s_tmp" % ( groupid, collect ) ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
100 os.remove( "%s.%s_tmp" % ( groupid, collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
101 for resFile in lFiles:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
102 prg = "cat"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
103 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
104 cmd += " %s >> %s.%s_tmp" % ( resFile, groupid, collect )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
105 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
106 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
107 prg = "rm"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
108 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
109 cmd += " -f %s" % ( resFile )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
110 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
111
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
112 if os.path.exists( "%s.%s" % ( groupid, collect ) ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
113 os.remove( "%s.%s" % ( groupid, collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
114
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
115 if collect == "align":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
116 if not allByAll:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
117 os.system( "mv %s.%s_tmp %s.%s" % ( groupid, collect, groupid, collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
118 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
119 filterRedundantMatches( "%s.%s_tmp" % ( groupid, collect ),
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
120 "%s.%s" % ( groupid, collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
121
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
122 # adapt the path IDs if necessary
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
123 elif collect == "path":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
124 prg = os.environ["REPET_PATH"] + "/bin/"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
125 if os.path.exists( prg + "pathnum2id" ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
126 prg += "pathnum2id"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
127 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
128 cmd += " -i %s.path_tmp" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
129 cmd += " -o %s.path" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
130 cmd += " -v %i" % ( verbose - 1 )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
131 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
132 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
133 prg += "pathnum2id.py"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
134 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
135 cmd += " -i %s.path_tmp" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
136 cmd += " -o %s.path" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
137 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
138
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
139 elif collect == "tab":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
140 prg = os.environ["REPET_PATH"] + "/bin/"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
141 if os.path.exists( prg + "tabnum2id" ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
142 prg += "tabnum2id"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
143 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
144 cmd += " -i %s.tab_tmp" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
145 cmd += " -o %s.tab" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
146 cmd += " -v %i" % ( verbose - 1 )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
147 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
148 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
149 prg += "tabnum2id.py"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
150 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
151 cmd += " -i %s.tab_tmp" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
152 cmd += " -o %s.tab" % ( groupid )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
153 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
154
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
155 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
156 os.remove( "%s.%s_tmp" % ( groupid, collect ) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
157
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
158
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
159 def main():
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
160 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
161 This program takes a query directory as input,
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
162 then launches Blaster and/or Matcher on each file in it,
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
163 finally results are optionally gathered in a single file.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
164 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
165
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
166 groupid = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
167 queryDir = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
168 patternSuffix = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
169 subjectBank = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
170 queue = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
171 tmpDir = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
172 mix = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
173 paramBlaster = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
174 paramMatcher = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
175 collect = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
176 configFileName = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
177 jobTable = "jobs"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
178 projectDir = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
179 global clean
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
180 clean = False
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
181 global verbose
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
182 verbose = 0
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
183 allByAll = False
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
184
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
185 try:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
186 opts, args = getopt.getopt(sys.argv[1:],"hg:q:S:s:Q:d:m:B:M:Z:C:t:p:cv:")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
187 except getopt.GetoptError, err:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
188 print str(err)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
189 help()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
190 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
191 for o,a in opts:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
192 if o == "-h":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
193 help()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
194 sys.exit(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
195 elif o == "-g":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
196 groupid = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
197 elif o == "-q":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
198 queryDir = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
199 if queryDir[-1] == "/":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
200 queryDir = queryDir[:-1]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
201 elif o == "-S":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
202 patternSuffix = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
203 elif o == "-s":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
204 subjectBank = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
205 elif o == "-Q":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
206 queue = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
207 elif o == "-d":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
208 tmpDir = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
209 if tmpDir[-1] == "/":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
210 tmpDir = tmpDir[:-1]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
211 elif o == "-m":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
212 mix = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
213 elif o == "-B":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
214 paramBlaster = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
215 elif o == "-M":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
216 paramMatcher = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
217 elif o == "-C":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
218 configFileName = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
219 elif o == "-Z":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
220 collect = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
221 elif o == "-t":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
222 jobTable = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
223 elif o == "-p":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
224 projectDir = a
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
225 elif o == "-c":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
226 clean = True
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
227 elif o == "-v":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
228 verbose = int(a)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
229
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
230 if groupid == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
231 print "ERROR: missing group identifier (-g)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
232 help()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
233 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
234
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
235 if queryDir == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
236 print "ERROR: missing query directory (-q)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
237 help()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
238 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
239
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
240 if mix in [ "1", "3" ] and subjectBank == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
241 print "ERROR: missing subject bank for Blaster"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
242 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
243
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
244 if os.environ["REPET_JOBS"] == "files" and projectDir == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
245 print "ERROR: missing compulsory options for jobs management via files"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
246 help()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
247 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
248
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
249 if not os.path.exists( queryDir ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
250 print "ERROR: can't find query directory '%s'" % ( queryDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
251 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
252
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
253 if verbose > 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
254 print "START %s" % ( sys.argv[0].split("/")[-1] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
255 sys.stdout.flush()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
256
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
257
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
258 logFileName = "%s_pid%s.log" % ( groupid, os.getpid() )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
259 handler = logging.FileHandler( logFileName )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
260 formatter = logging.Formatter( "%(asctime)s %(levelname)s: %(message)s" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
261 handler.setFormatter( formatter )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
262 logging.getLogger('').addHandler( handler )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
263 logging.getLogger('').setLevel( logging.DEBUG )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
264 logging.info( "started" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
265
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
266
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
267 if configFileName != "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
268 if not os.path.exists( configFileName ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
269 print "ERROR: configuration file '%s' doesn't exist" % ( configFileName )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
270 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
271 config = ConfigParser.ConfigParser()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
272 config.readfp( open(configFileName) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
273 host = config.get("repet_env","repet_host")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
274 user = config.get("repet_env","repet_user")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
275 passwd = config.get("repet_env","repet_pw")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
276 dbname = config.get("repet_env","repet_db")
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
277 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
278 host = os.environ["REPET_HOST"]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
279 user = os.environ["REPET_USER"]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
280 passwd = os.environ["REPET_PW"]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
281 dbname = os.environ["REPET_DB"]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
282
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
283 if os.environ["REPET_JOBS"] == "files":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
284 jobdb = RepetJob( dbname = projectDir + "/" + os.environ["REPET_DB"] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
285 elif os.environ["REPET_JOBS"] == "MySQL":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
286 jobdb = RepetJob( user, host, passwd, dbname )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
287 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
288 print "ERROR: REPET_JOBS is '%s'" % ( os.environ["REPET_JOBS"] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
289 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
290
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
291
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
292 currentDir = os.getcwd()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
293 if tmpDir == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
294 tmpDir = currentDir
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
295
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
296 global pL
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
297 pL = programLauncher()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
298
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
299 if "-a" in paramBlaster:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
300 allByAll = True
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
301
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
302
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
303 # if Blaster will be launched, prepare the subject data if necessary
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
304 if mix != "2" and not os.path.exists( "%s_cut" % ( subjectBank ) ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
305 if verbose > 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
306 print "prepare subject bank '%s'..." % ( subjectBank.split("/")[-1] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
307 sys.stdout.flush()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
308 prg = "blaster"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
309 cmd = prg
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
310 cmd += " -q %s" % ( subjectBank )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
311 cmd += " %s" % ( paramBlaster )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
312 cmd += " -P"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
313 pL.launch( prg, cmd )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
314
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
315
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
316 # launch Blaster only (on '*.fa' in queryDir)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
317 if mix == "1":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
318 launcher = Launcher.BlasterLauncher( jobdb, queryDir, subjectBank, paramBlaster, currentDir, tmpDir, jobTable, queue, groupid, "Blaster" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
319 if patternSuffix == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
320 patternSuffix = "*.fa"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
321 launcher.run( patternSuffix, verbose )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
322 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
323 launcher.clean()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
324
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
325 # launch Matcher only (on '*.align' in queryDir; don't use '-q' or '-s', only '-m')
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
326 elif mix == "2":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
327 launcher = Launcher.MatcherLauncher( jobdb, queryDir, subjectBank, paramMatcher, currentDir, tmpDir, jobTable, queue, groupid, "Matcher" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
328 if patternSuffix == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
329 patternSuffix = "*.align"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
330 launcher.run( patternSuffix, verbose )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
331 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
332 launcher.clean()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
333
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
334 # launch Blaster+Matcher (on '*.fa' in queryDir)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
335 elif mix == "3":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
336 launcher = Launcher.Launcher( jobdb, queryDir, subjectBank, paramBlaster, currentDir, tmpDir, jobTable, queue, groupid, "BlasterMatcher" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
337 launcher.beginRun()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
338 if patternSuffix == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
339 patternSuffix = "*.fa"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
340 lFaFiles = glob.glob( queryDir + "/" + patternSuffix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
341 if len(lFaFiles) == 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
342 print "ERROR: query directory '%s' is empty of suffix '%s'" % ( queryDir, patternSuffix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
343 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
344 count = 0
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
345 for inFaName in lFaFiles:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
346 count += 1
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
347 launcher.acronyme = "BlasterMatcher_%i" % ( count )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
348 launcher.job.jobname = launcher.acronyme
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
349 prefix = os.path.basename( inFaName )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
350 cmd_start = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
351 cmd_start += "if not os.path.exists( \"" + prefix + "\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
352 cmd_start += "\tos.system( \"cp " + inFaName + " .\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
353 launchB = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
354 launchB += "blaster"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
355 launchB += " -q %s" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
356 launchB += " -s %s" % ( subjectBank )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
357 launchB += " -B %s" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
358 if paramBlaster != "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
359 launchB += " %s" % ( paramBlaster )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
360 cleanB = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
361 cleanB += "if not os.path.exists( \"%s/%s.param\" ):\n" % ( currentDir, prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
362 cleanB += "\tos.system( \"mv %s.param %s\" )\n" % ( prefix, currentDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
363 cleanB += "if os.path.exists( \"" + prefix + ".Nstretch.map\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
364 cleanB += "\tos.remove( \"" + prefix + ".Nstretch.map\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
365 cleanB += "if os.path.exists( \"" + prefix + "_cut\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
366 cleanB += "\tos.system( \"rm -f " + prefix + "_cut*\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
367 cleanB += "if os.path.exists( \"" + prefix + ".raw\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
368 cleanB += "\tos.remove( \"" + prefix + ".raw\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
369 cleanB += "if os.path.exists( \"" + prefix + ".seq_treated\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
370 cleanB += "\tos.remove( \"" + prefix + ".seq_treated\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
371 launchM = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
372 launchM += os.environ["REPET_PATH"] + "/bin/matcher"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
373 launchM += " -m %s.align" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
374 launchM += " -q %s" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
375 launchM += " -s %s" % ( subjectBank )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
376 if paramMatcher != "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
377 launchM += " %s" % ( paramMatcher )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
378 cleanM = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
379 s = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
380 if "-a" in paramMatcher:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
381 s = "match"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
382 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
383 s = "clean_match"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
384 if collect == "path":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
385 cleanM += "if not os.path.exists( \"%s/%s.align.%s.path\" ):\n" % ( currentDir, prefix, s )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
386 cleanM += "\tos.system( \"mv %s.align.%s.path %s\" )\n" % ( prefix, s, currentDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
387 cleanM += "if os.path.exists( \"" + prefix + ".align."+s+".tab\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
388 cleanM += "\tos.remove( \"" + prefix + ".align."+s+".tab\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
389 elif collect == "tab":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
390 cleanM += "if not os.path.exists( \"%s/%s.align.%s.tab\" ):\n" % ( currentDir, prefix, s )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
391 cleanM += "\tos.system( \"mv %s.align.%s.tab %s\" )\n" % ( prefix, s, currentDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
392 cleanM += "if os.path.exists( \"" + prefix + ".align."+s+".path\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
393 cleanM += "\tos.remove( \"" + prefix + ".align."+s+".path\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
394 cleanM += "if not os.path.exists( \"%s/%s.align.%s.param\" ):\n" % ( currentDir, prefix, s )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
395 cleanM += "\tos.system( \"mv %s.align.%s.param %s\" )\n" % ( prefix, s, currentDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
396 if tmpDir != currentDir:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
397 cleanM += "if os.path.exists( \"%s\" ):\n" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
398 cleanM += "\tos.remove( \"%s\" )\n" % ( prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
399 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
400 cleanM += "if os.path.exists( \"" + prefix + ".align\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
401 cleanM += "\tos.remove( \"" + prefix + ".align\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
402 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
403 cleanM += "if not os.path.exists( \"%s/%s.align\" ):\n" % ( currentDir, prefix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
404 cleanM += "\tos.system( \"mv %s.align %s\" )\n" % ( prefix, currentDir )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
405 cleanM += "if os.path.exists( \"" + prefix + ".align."+s+".fa\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
406 cleanM += "\tos.remove( \"" + prefix + ".align."+s+".fa\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
407 cleanM += "if os.path.exists( \"" + prefix + ".align."+s+".map\" ):\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
408 cleanM += "\tos.remove( \"" + prefix + ".align."+s+".map\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
409 cmd_start += "print \"" + launchB + "\"; sys.stdout.flush()\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
410 cmd_start += "log = os.system( \"" + launchB + "\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
411 cmd_start += "if log != 0:\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
412 cmd_start += launcher.cmd_test( launcher.job, "error", loop=1 )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
413 cmd_start += "\tsys.exit(1)\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
414 cmd_start += cleanB
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
415 cmd_start += "print \"" + launchM + "\"; sys.stdout.flush()\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
416 cmd_start += "log = os.system( \"" + launchM + "\" )\n"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
417 cmd_start += cleanM
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
418 launcher.runSingleJob( cmd_start )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
419 launcher.acronyme = "BlasterMatcher"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
420 launcher._nbJobs = count
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
421 launcher.endRun()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
422 if clean == True:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
423 launcher.clean( "BlasterMatcher_*" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
424
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
425 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
426 print "ERROR: option '-m %s' not recognized" % ( mix )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
427 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
428
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
429
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
430 if collect != "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
431 if collect in [ "align", "path", "tab" ]:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
432 runCollect( groupid, collect, allByAll )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
433 else:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
434 print "ERROR: collect '%s' not implemented" % ( collect )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
435 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
436
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
437
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
438 logging.info( "finished" )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
439
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
440 if verbose > 0:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
441 print "END %s" % ( sys.argv[0].split("/")[-1] )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
442 sys.stdout.flush()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
443
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
444 return 0
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
445
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
446
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
447 if __name__ == "__main__":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
448 main()