Skip to content
Snippets Groups Projects
solexaQa.py 1.65 KiB
Newer Older
  • Learn to ignore specific revisions
  • kohleman's avatar
    kohleman committed
    #!/usr/bin/env python
    '''
    Python Wrapper for a perl based program.
    Generates tile based quality graphics
    
    Output: pdf 
    @author: Manuel Kohler
    @copyright: ETH Zurich
    @precondition: Working pdftk and SolexaQA.pl binaries
    
    '''
    
    import subprocess
    import shlex
    import os
    import sys
    from optparse import OptionParser
    
    SCRIPT = "/usr/local/dsu/bin/SolexaQA/SolexaQA.pl"
    PDFTK = '/usr/local/dsu/pdftk-1.41/pdftk/pdftk'
    
    parser = OptionParser()
    parser.add_option("-p", "--path", dest="path", action="store", type="string",
                      help="Path of the fastq files", metavar="PATH")
    parser.add_option("-v", dest="verbose", action="store_true",
                      help="tell me all")
    (options, args) = parser.parse_args()
    path = options.path
    os.chdir(path)
    
    listdir = os.listdir(path)
    for file in listdir:
      if file.endswith('fastq'):
        args = SCRIPT + " -sanger " + path + "/" + file
        Newargs = shlex.split(args)
        p = subprocess.Popen(Newargs)
        p.wait()
        #convert -page A4 ETHZ_BSSE_110204_62Y8YAAXX_7.fastq.png  ETHZ_BSSE_110204_62Y8YAAXX_7.fastq_TileStatistics_A4.pdf
        convert = ['convert', '-page', 'A4', file + '.png', file + '.png.pdf']
        c = subprocess.Popen(convert)
        c.wait()
        #rm *.matrix *.segments *.quality *.png
        os.remove(file + '.matrix')
        os.remove(file + '.segments')
        os.remove(file + '.quality')
        os.remove(file + '.png')
       
        files = file + '.segments.hist.pdf', file + '.quality.pdf', file + '.png.pdf' 
        assemble = [ PDFTK, 'cat', 'output', file.replace('.', '_', 1) + '_SolexaQA.pdf']
        [assemble.insert(1, i) for i in files]
        a = subprocess.Popen(assemble)
        a.wait()
        [os.remove(f) for f in files] 
    print("Finished...")