view rgFastQC.py @ 0:d91b89b552f3 draft default tip

Imported from capsule None
author tmcgowan
date Fri, 12 Sep 2014 11:55:50 -0400
parents
children
line wrap: on
line source

"""
Rewrite of rgFastQC.py for v. 0.11.2 of FastQC

"""
import re
import os
import sys
import subprocess
import optparse
import shutil
import tempfile
import zipfile
import gzip
import glob

class FastQCRunner(object):
    
    def __init__(self,opts=None):
        assert opts <> None
        self.opts = opts
        
    def prepare_command_line(self):
        self.fastqinfilename = re.sub(ur'[^a-zA-Z0-9_\-\.]', '_', os.path.basename(self.opts.inputfilename))
        command_line = [opts.executable, '--outdir %s' % opts.outputdir]
        if opts.contaminants <> None :
            command_line.append('--contaminants %s' % opts.contaminants)
        command_line.append('--quiet %s' % self.fastqinfilename)
        self.command_line = ' '.join(command_line)
        
    def copy_working_file_to_dataset(self):
        result_file = glob.glob('*html')
        os.system('cp %s %s' % (result_file[0], self.opts.htmloutput))


    def run_fastqc(self):
        
        dummy,tlog = tempfile.mkstemp(prefix='rgFastQC',suffix=".log",dir=self.opts.outputdir)
        sout = open(tlog, 'w')
        
        self.prepare_command_line()
        sout.write(self.command_line)
        sout.write('\n')
        sout.write("Creating symlink\n")
        os.symlink(self.opts.input, self.fastqinfilename)
        sout.write("check_call\n")
        subprocess.check_call(self.command_line, shell=True)        
        sout.write("Copying working %s file to %s \n" % (self.fastqinfilename, self.opts.htmloutput))
        self.copy_working_file_to_dataset()
        sout.write("Finished")
        sout.close()
                        

if __name__ == '__main__':
    op = optparse.OptionParser()
    op.add_option('-i', '--input', default=None)
    op.add_option('-j', '--inputfilename', default=None)
    op.add_option('-o', '--htmloutput', default=None)
    op.add_option('-d', '--outputdir', default="/tmp/shortread")
    op.add_option('-f', '--informat', default='fastq')
    op.add_option('-n', '--namejob', default='rgFastQC')
    op.add_option('-c', '--contaminants', default=None)
    op.add_option('-e', '--executable', default='fastqc')
    opts, args = op.parse_args()

    fastqc_runner = FastQCRunner(opts)
    fastqc_runner.run_fastqc()