view build-icm_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 --> build-icm
version 0.2 (andrea.pinna@crs4.it)
"""

import optparse
import subprocess
import sys

def __main__():
    # load arguments
    print 'Parsing Build-ICM input options...'
    parser = optparse.OptionParser()
    parser.add_option('--biSequence', dest='sequence', help='')
    parser.add_option('--biDepth', dest='depth', type='int', help='')
    parser.add_option('--biNoStops', action='store_true', dest='no_stops', help='')
    parser.add_option('--biPeriod', dest='period', type='int', help='')
    parser.add_option('--biReverse', action='store_true', dest='reverse', help='')
    parser.add_option('--biWidth', dest='width', type='int', help='')
    parser.add_option('--biTransTable', dest='trans_table', type='int', help='')
    parser.add_option('--biStopCodons', dest='stop_codons', help='')
    parser.add_option('--biIcm', dest='output', help='')
    parser.add_option('--logfile', dest='logfile', help='')
    (options, args) = parser.parse_args()
    if len(args) > 0:
        parser.error('Wrong number of arguments')
    
    # build Build-ICM command to be executed
    sequence = options.sequence
    if options.depth is not None:
        depth = '--depth %d' % (options.depth)
    else:
        depth = ''
    if options.no_stops:
        no_stops = '--no_stops'
    else:
        no_stops = ''
    if options.period is not None:
        period = '--period %d' % (options.period)
    else:
        period = ''
    if options.reverse:
        reverse = '--reverse'
    else:
        reverse = ''
    if options.width is not None:
        width = '--width %d' % (options.width)
    else:
        width = ''
    if options.trans_table is not None:
        trans_table = '--trans_table %d' % (options.trans_table)
    else:
        trans_table = ''
    if options.stop_codons:
        stop_codons = '--stop_codons %s' % (options.stop_codons)
    else:
        stop_codons = ''
    output = options.output
    logfile = options.logfile
    
    # Build Build-ICM command
    cmd = 'build-icm %s %s %s %s %s %s %s %s < %s ' % (depth, no_stops, period, reverse, width, trans_table, stop_codons, output, sequence)
    print '\nBuild-ICM command to be executed: \n %s' % (cmd)
    
    print 'Executing Build-ICM...'
    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 'Build-ICM executed!'


if __name__ == "__main__":
    __main__()