annotate breakdancer.py @ 22:96e938d6904e draft default tip

Uploaded
author jeremie
date Mon, 07 Jul 2014 10:32:05 -0400
parents b83483e9b1e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
1 #!/usr/bin/python
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
2
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
3 import argparse, os, shutil, subprocess, sys, tempfile, shlex, time
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
4
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
5 parser = argparse.ArgumentParser(description='')
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
6 # required
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
7 parser.add_argument('-i1', dest='inputBamFile', required=True, help='the bam input file')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
8 parser.add_argument('-o1', dest='outputRawFile', required=True, help='the raw output file')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
9 # optional
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
10 parser.add_argument('-o2', dest='outputVcfFile', required=False, help='the vcf output file')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
11 parser.add_argument('-o', dest='chromosome', required=False, help='operate on a single chromosome')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
12 parser.add_argument('-s', dest='minLength', type=int, required=False, help='minimum length of a region', default=7)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
13 parser.add_argument('-c', dest='cutoff', type=int, required=False, help='cutoff in unit of standard deviation', default=3)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
14 parser.add_argument('-m', dest='maxSvSize', type=int, required=False, help='maximum SV size', default=1000000000)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
15 parser.add_argument('-q', dest='minMapQuality', type=int, required=False, help='minimum alternative mapping quality', default=35)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
16 parser.add_argument('-r', dest='minReadDepth', type=int, required=False, help='minimum number of read pairs required to establish a connection', default=2)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
17 parser.add_argument('-x', dest='maxHaploidCov', type=int, required=False, help='maximum threshold of haploid sequence coverage for regions to be ignored', default=1000)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
18 parser.add_argument('-b', dest='bufferSize', type=int, required=False, help='buffer size for building connection', default=100)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
19 parser.add_argument('-t', dest='onlyTrans', action='store_true', help='only detect transchromosomal rearrangement', default=False)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
20 parser.add_argument('-d', dest='prefix', required=False, help='prefix of fastq files that SV supporting reads will be saved by library')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
21 parser.add_argument('-g', dest='bedFormat', required=False, help='dump SVs and supporting reads in BED format for GBrowse')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
22 parser.add_argument('-l', dest='matePair', required=False, help='analyze Illumina long insert (mate-pair) library')
13
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
23 parser.add_argument('-a', dest='sortByLibrary', action='store_true', help='print out copy number and support reads per library rather than per bam', default=False)
14
2c3b8a1d8f4b Uploaded
jeremie
parents: 13
diff changeset
24 # parser.add_argument('-h', dest='AFColumn', action='store_true', help='print out Allele Frequency column', default=False)
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
25 parser.add_argument('-y', dest='scoreFilter', type=int, required=False, help='output score filter', default=30)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
26
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
27
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
28
19
b83483e9b1e8 Uploaded
jeremie
parents: 18
diff changeset
29 # binPath = os.environ['BREAKDANCER_BIN']
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
30
19
b83483e9b1e8 Uploaded
jeremie
parents: 18
diff changeset
31 # bam2cfgPath = binPath+"/bam2cfg.pl"
b83483e9b1e8 Uploaded
jeremie
parents: 18
diff changeset
32 # breakdancer2vcfPath = binPath+"/breakdancer2vcf.py"
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
33
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
34
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
35 # def bam2cfg(args, tempDir):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
36 # config = tempDir+"/breakdancer_config"
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
37 # cmd = 'perl %s %s' % (bam2cfgPath, args.inputBamFile)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
38 # execute(cmd, output=config)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
39 # return config
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
40
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
41
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
42 # def breakdancer(args, config):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
43 # cmd = 'breakdancer-max %s' % (config)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
44 # execute(cmd, output=args.outputRawFile)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
45
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
46
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
47 # def breakdancer2vcf(args):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
48 # cmd = "python %s -i %s -o %s" % (breakdancer2vcfPath, args.outputRawFile, args.outputVcfFile)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
49 # execute(cmd)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
50
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
51 def execute(cmd, output=None):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
52 # function to execute a cmd and report if an error occur
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
53 # print(cmd)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
54 try:
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
55 process = subprocess.Popen(args=shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
56 process.wait()
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
57 stdout,stderr = process.communicate()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
58 except Exception, e: # une erreur de ma commande : stderr
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
59 sys.stderr.write("problem doing : %s\n%s\n" %(cmd, e))
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
60 return
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
61 if output:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
62 output = open(output, 'w')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
63 output.write(stdout)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
64 output.close()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
65 if stderr != '': # une erreur interne au programme : stdout (sinon, souvent des warning arrete les programmes)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
66 sys.stdout.write("warning or error while doing : %s\n-----\n%s-----\n\n" %(cmd, stderr))
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
67
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
68
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
69 # def execute(cmd, output=""):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
70 # try:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
71 # err = open(tempDir+"/errorLog", 'a')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
72 # if output != "":
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
73 # out = open(output, 'w')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
74 # else:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
75 # out = subprocess.PIPE
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
76 # process = subprocess.Popen(args=shlex.split(cmd), stdout=out, stderr=err)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
77 # process.wait()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
78 # err.close()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
79 # if out != subprocess.PIPE:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
80 # out.close()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
81 # except Exception, e:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
82 # sys.stderr.write("problem doing : %s\n" %(cmd))
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
83 # sys.stderr.write('%s\n\n' % str(e))
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
84
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
85
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
86 def check(output):
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
87 if (os.path.getsize(output)>0):
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
88 return True
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
89 else:
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
90 sys.stderr.write('The output file is empty : %s\n' % (output))
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
91
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
92
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
93 def getLine(file):
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
94 try:
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
95 f = open(file, 'r')
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
96 lignes = f.readlines()
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
97 n=0
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
98 for ligne in lignes:
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
99 if ligne.strip()[0]!="#":
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
100 n+=1
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
101 # n = len(lignes)
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
102 f.close()
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
103 except Exception, e:
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
104 sys.stderr.write('%s\n' % str(e))
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
105 return n
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
106
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
107
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
108 def compare(output1, output2):
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
109 # compare le nombre de ligne entre 2 fichiers
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
110 # pour verifier qu'aucune ligne n'a ete saute
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
111 num_raw = getLine(output1)
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
112 num_vcf = getLine(output2)
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
113 if (num_raw==num_vcf):
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
114 return True
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
115 else:
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
116 sys.stderr.write('Not the same number of variant between the raw file and the vcf file : %d vs %d\n' % (num_raw, num_vcf))
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
117
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
118 def getVersion(program):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
119 import tempfile, subprocess
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
120 try:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
121 temp = tempfile.NamedTemporaryFile().name
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
122 tempStdout = open(temp, 'wb')
18
0e73928aa0ca Uploaded
jeremie
parents: 17
diff changeset
123 proc = subprocess.Popen(args=program, shell=True, stdout=tempStdout, stderr=tempStdout)
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
124 tempStdout.close()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
125 returncode = proc.wait()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
126 stdout = None
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
127 for line in open(tempStdout.name, 'rb'):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
128 if line.lower().find('version') >= 0:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
129 stdout = line.strip()
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
130 break
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
131 if stdout:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
132 sys.stdout.write('%s\n' % stdout)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
133 except:
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
134 sys.stdout.write('Could not determine %s version\n' % (program))
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
135
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
136 def __main__():
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
137
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
138 time0 = time.time()
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
139 tempDir = tempfile.mkdtemp()
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
140 args = parser.parse_args()
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
141 getVersion("breakdancer-max")
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
142
22
96e938d6904e Uploaded
jeremie
parents: 19
diff changeset
143 os.system('echo $PATH')
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
144 try:
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
145 # config = bam2cfg(args, tempDir)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
146 # breakdancer(args, config)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
147 # breakdancer2vcf(args)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
148
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
149 # bam2cfg
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
150 config = tempDir+"/breakdancer_config"
19
b83483e9b1e8 Uploaded
jeremie
parents: 18
diff changeset
151 cmd = 'bam2cfg.pl %s' % (args.inputBamFile)
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
152 execute(cmd, output=config)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
153
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
154 # breakdancer
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
155 cmd = 'breakdancer-max %s' % (config)
13
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
156 cmd += ' -s %d -c %d -m %d -q %d -r %d -x %d -b %d -y %d' % (args.minLength, args.cutoff, args.maxSvSize, args.minMapQuality, args.minReadDepth, args.maxHaploidCov, args.bufferSize, args.scoreFilter)
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
157 if args.chromosome:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
158 cmd += ' -o %s ' % (args.chromosome)
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
159 if args.onlyTrans:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
160 cmd += ' -t '
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
161 if args.prefix:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
162 cmd += ' -d %s ' % (args.prefix)
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
163 if args.bedFormat:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
164 cmd += ' -g %s ' % (args.bedFormat)
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
165 if args.matePair:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
166 cmd += ' -l '
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
167 if args.sortByLibrary:
62bf6aed1908 Uploaded
jeremie
parents: 7
diff changeset
168 cmd += ' -a '
14
2c3b8a1d8f4b Uploaded
jeremie
parents: 13
diff changeset
169 # if args.AFColumn:
2c3b8a1d8f4b Uploaded
jeremie
parents: 13
diff changeset
170 # cmd += ' -h '
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
171 execute(cmd, output=args.outputRawFile)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
172
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
173 # breakdancer2vcf
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
174 if args.outputVcfFile:
19
b83483e9b1e8 Uploaded
jeremie
parents: 18
diff changeset
175 cmd = "breakdancer2vcf.py -i %s -o %s" % (args.outputRawFile, args.outputVcfFile)
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
176 execute(cmd)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
177
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
178 # quelques tests
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
179 # verifier que les fichiers de sorties ne sont pas vides
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
180 check(args.outputRawFile)
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
181 check(args.outputVcfFile)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
182 # comparer le nombre de ligne entre les 2 fichiers
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
183 # pour etre sur que toute les variations ont ete prises en compte
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
184 compare(args.outputRawFile, args.outputVcfFile)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
185
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
186 sys.stdout.write('\nDone in %d seconds\n' %(int(time.time()-time0)))
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
187
17
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
188 # if (os.path.getsize(errorFile)>0):
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
189 # sys.stdout.write('At least one non fatal error was send, check the file : %s\n' %(errorFile))
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
190 # try:
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
191 # err = open(errorFile, 'r')
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
192 # errors = err.read()
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
193 # err.close()
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
194 # sys.stdout.write("Errors :\n%s" %(errors))
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
195 # except Exception, e:
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
196 # sys.stderr.write('%s\n' % str(e))
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
197 # else:
48d2f8be5c97 Uploaded
jeremie
parents: 14
diff changeset
198 sys.stdout.write('BreakDancer successful')
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
199
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
200 except Exception, e:
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
201 sys.stdout.write('BreakDancer fail\n')
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
202 sys.stderr.write('%s\n' % str(e))
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
203 sys.exit()
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
204
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
205 finally:
7
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
206 if os.path.exists(tempDir):
c971e3f6de9f Uploaded
jeremie
parents: 2
diff changeset
207 shutil.rmtree(tempDir)
2
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
208
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
209 if __name__=="__main__":
01bb7558d3b3 Uploaded
jeremie
parents:
diff changeset
210 __main__()