view glimmer3_wrapper.py @ 0:9c8ffce71f7c draft default tip

Uploaded
author crs4
date Mon, 09 Sep 2013 12:16:17 -0400
parents
children
line wrap: on
line source

# -*- coding: utf-8 -*-
"""
Glimmer --> glimmer3
version 0.2 (andrea.pinna@crs4.it)
"""

import optparse
import shutil
import subprocess
import sys

def __main__():
    # load arguments
    print 'Parsing input options...'
    parser = optparse.OptionParser()
    parser.add_option('--glSequence', dest='sequence', help='')
    parser.add_option('--glIcm', dest='icm', help='')
    #parser.add_option('--glPrefix', dest='prefix', help='')
    parser.add_option('--glStartCodons', dest='start_codons', help='')
    parser.add_option('--glRbsPwm', dest='rbs_pwm', help='')
    parser.add_option('--glGcPercent', dest='gc_percent', type='float', help='')
    parser.add_option('--glEntropy', dest='entropy', help='')
    parser.add_option('--glFirstCodon', action='store_true', dest='first_codon', help='')
    parser.add_option('--glGeneLen', dest='gene_len', type='int', help='')
    parser.add_option('--glIgnore', dest='ignore', help='')
    parser.add_option('--glLinear', action='store_true', dest='linear', help='')
    parser.add_option('--glOrfCoords', dest='orf_coords', help='')
    parser.add_option('--glSeparateGenes', action='store_true', dest='separate_genes', help='')
    parser.add_option('--glMaxOverlap', dest='max_olap', type='int', help='')
    parser.add_option('--glStartProbs', dest='start_probs', help='')
    parser.add_option('--glIgnoreScoreLen', dest='ignore_score_len', type='int', help='')
    parser.add_option('--glNoIndep', action='store_true', dest='no_indep', help='')
    parser.add_option('--glThreshold', dest='threshold', type='int', help='')
    parser.add_option('--glExtend', action='store_true', dest='extend', help='')
    parser.add_option('--glTransTable', dest='trans_table', type='int', help='')
    parser.add_option('--glStopCodons', dest='stop_codons', help='')
    parser.add_option('--glDetail', dest='detail', help='')
    parser.add_option('--glPredict', dest='predict', help='')
    parser.add_option('--logfile', dest='logfile', help='')
    (options, args) = parser.parse_args()
    if len(args) > 0:
        parser.error('Wrong number of arguments')
    
    # build Glimmer3 command to be executed
    # sequence file
    sequence = options.sequence
    # icm file
    icm = options.icm
    # prefix (not needed)
    prefix = 'prefix'
    # start codons
    if options.start_codons:
        start_codons = '--start_codons %s' % (options.start_codons)
    else:
        start_codons = ''
    # rbs_pwm
    if options.rbs_pwm:
        rbs_pwm = '--rbs_pwm %s' % (options.rbs_pwm)
    else:
        rbs_pwm = ''
    # gc percentage
    if options.gc_percent is not None:
        gc_percent = '--gc_percent %s' % (options.gc_percent)
    else:
        gc_percent = ''
    # entropy
    if options.entropy:
        entropy = "--entropy '%s'" % (options.entropy)
    else:
        entropy = ''
    # first_codon
    if options.first_codon:
        first_codon = '--first_codon'
    else:
        first_codon = ''
    # gene length
    if options.gene_len is not None:
        gene_len = '--gene_len %d' % (options.gene_len)
    else:
        gene_len = ''
    # ignore
    if options.ignore:
        ignore = '--ignore %s' % (options.ignore)
    else:
        ignore = ''
    # linear
    if options.linear:
        linear = '--linear'
    else:
        linear = ''
    # orf_coords
    if options.orf_coords:
        orf_coords = '--orf_coords %s' % (options.orf_coords)
    else:
        orf_coords = ''
    # separate genes
    if options.separate_genes:
        separate_genes = '--separate_genes'
    else:
        separate_genes = ''
    # max overlap
    if options.max_olap is not None:
        max_olap = '--max_olap %d' % (options.max_olap)
    else:
        max_olap = ''
    # start probs
    if options.start_probs:
        start_probs = '--start_probs %s' % (options.start_probs)
    else:
        start_probs = ''
    # ignore score length
    if options.ignore_score_len is not None:
        ignore_score_len = '--ignore_score_len %d' % (options.ignore_score_len)
    else:
        ignore_score_len = ''
    # no indep
    if options.no_indep:
        no_indep = '--no_indep'
    else:
        no_indep = ''
    # threshold
    if options.threshold is not None:
        threshold = '--threshold %d' % (options.threshold)
    else:
        threshold = ''
    # extend
    if options.extend:
        extend = '--extend'
    else:
        extend = ''
    # trans table
    if options.trans_table is not None:
        trans_table = '--trans_table %d' % (options.trans_table)
    else:
        trans_table = ''
    # stop codons
    if options.stop_codons:
        stop_codons = '--stop_codons %s' % (options.stop_codons)
    else:
        stop_codons = ''
    logfile = options.logfile
    
    # Build Glimmer3 command
    cmd = 'glimmer3 %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s' % (start_codons, rbs_pwm, gc_percent, entropy, first_codon, gene_len, ignore, linear, orf_coords, separate_genes, max_olap, start_probs, ignore_score_len, no_indep, threshold, extend, trans_table, stop_codons, sequence, icm, prefix)
    print '\nGlimmer3 command to be executed: \n %s' % (cmd)
    
    print 'Executing Glimmer3...'
    if logfile:
        log = open(logfile, 'w')
    else:
        log = sys.stdout
    try:
        subprocess.check_call(cmd, stdout=log, stderr=subprocess.STDOUT, shell=True)
    finally:
        if log != sys.stdout:
            log.close()
    print 'Glimmer3 executed!'
    
    shutil.move(prefix + ".detail", options.detail)
    shutil.move(prefix + ".predict", options.predict)


if __name__ == "__main__":
    __main__()