annotate rgFastQC.py @ 0:d91b89b552f3 draft default tip

Imported from capsule None
author tmcgowan
date Fri, 12 Sep 2014 11:55:50 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
1 """
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
2 Rewrite of rgFastQC.py for v. 0.11.2 of FastQC
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
3
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
4 """
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
5 import re
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
6 import os
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
7 import sys
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
8 import subprocess
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
9 import optparse
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
10 import shutil
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
11 import tempfile
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
12 import zipfile
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
13 import gzip
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
14 import glob
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
15
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
16 class FastQCRunner(object):
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
17
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
18 def __init__(self,opts=None):
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
19 assert opts <> None
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
20 self.opts = opts
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
21
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
22 def prepare_command_line(self):
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
23 self.fastqinfilename = re.sub(ur'[^a-zA-Z0-9_\-\.]', '_', os.path.basename(self.opts.inputfilename))
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
24 command_line = [opts.executable, '--outdir %s' % opts.outputdir]
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
25 if opts.contaminants <> None :
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
26 command_line.append('--contaminants %s' % opts.contaminants)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
27 command_line.append('--quiet %s' % self.fastqinfilename)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
28 self.command_line = ' '.join(command_line)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
29
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
30 def copy_working_file_to_dataset(self):
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
31 result_file = glob.glob('*html')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
32 os.system('cp %s %s' % (result_file[0], self.opts.htmloutput))
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
33
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
34
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
35 def run_fastqc(self):
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
36
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
37 dummy,tlog = tempfile.mkstemp(prefix='rgFastQC',suffix=".log",dir=self.opts.outputdir)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
38 sout = open(tlog, 'w')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
39
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
40 self.prepare_command_line()
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
41 sout.write(self.command_line)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
42 sout.write('\n')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
43 sout.write("Creating symlink\n")
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
44 os.symlink(self.opts.input, self.fastqinfilename)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
45 sout.write("check_call\n")
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
46 subprocess.check_call(self.command_line, shell=True)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
47 sout.write("Copying working %s file to %s \n" % (self.fastqinfilename, self.opts.htmloutput))
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
48 self.copy_working_file_to_dataset()
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
49 sout.write("Finished")
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
50 sout.close()
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
51
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
52
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
53 if __name__ == '__main__':
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
54 op = optparse.OptionParser()
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
55 op.add_option('-i', '--input', default=None)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
56 op.add_option('-j', '--inputfilename', default=None)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
57 op.add_option('-o', '--htmloutput', default=None)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
58 op.add_option('-d', '--outputdir', default="/tmp/shortread")
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
59 op.add_option('-f', '--informat', default='fastq')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
60 op.add_option('-n', '--namejob', default='rgFastQC')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
61 op.add_option('-c', '--contaminants', default=None)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
62 op.add_option('-e', '--executable', default='fastqc')
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
63 opts, args = op.parse_args()
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
64
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
65 fastqc_runner = FastQCRunner(opts)
d91b89b552f3 Imported from capsule None
tmcgowan
parents:
diff changeset
66 fastqc_runner.run_fastqc()