| 0 | 1 # -*- coding: utf-8 -*- | 
|  | 2 """ | 
|  | 3 Glimmer --> long-orfs | 
|  | 4 version 0.2 (andrea.pinna@crs4.it) | 
|  | 5 """ | 
|  | 6 | 
|  | 7 import optparse | 
|  | 8 import subprocess | 
|  | 9 import sys | 
|  | 10 | 
|  | 11 def __main__(): | 
|  | 12     # load arguments | 
|  | 13     print 'Parsing Long-ORFs input options...' | 
|  | 14     parser = optparse.OptionParser() | 
|  | 15     parser.add_option('--loSequence', dest='sequence', help='') | 
|  | 16     parser.add_option('--loStartCodons', dest='start_codons', help='') | 
|  | 17     parser.add_option('--loEntropy', dest='entropy', help='') | 
|  | 18     parser.add_option('--loFixed', action='store_true', dest='fixed', help='') | 
|  | 19     parser.add_option('--loMinLen', dest='min_len', type='int', help='') | 
|  | 20     parser.add_option('--loIgnore', dest='ignore', help='') | 
|  | 21     parser.add_option('--loLinear', action='store_true', dest='linear', help='') | 
|  | 22     parser.add_option('--loLengthOpt', action='store_true', dest='length_opt', help='') | 
|  | 23     parser.add_option('--loNoHeader', action='store_true', dest='no_header', help='') | 
|  | 24     parser.add_option('--loMaxOverlap', dest='max_olap', type='int', help='') | 
|  | 25     parser.add_option('--loCutoff', dest='cutoff', type='float', help='') | 
|  | 26     parser.add_option('--loWithoutStops', action='store_true', dest='without_stops', help='') | 
|  | 27     parser.add_option('--loTransTable', dest='trans_table', type='int', help='') | 
|  | 28     parser.add_option('--loStopCodons', dest='stop_codons', help='') | 
|  | 29     parser.add_option('--loOutput', dest='output', help='') | 
|  | 30     parser.add_option('--logfile', dest='logfile', help='') | 
|  | 31     (options, args) = parser.parse_args() | 
|  | 32     if len(args) > 0: | 
|  | 33         parser.error('Wrong number of arguments') | 
|  | 34 | 
|  | 35     # build Long-ORFs command to be executed | 
|  | 36     sequence = options.sequence | 
|  | 37     if options.start_codons: | 
|  | 38         start_codons = '--start_codons %s' % (options.start_codons) | 
|  | 39     else: | 
|  | 40         start_codons = '' | 
|  | 41     if options.entropy: | 
|  | 42         entropy = '--entropy %s' % (options.entropy) | 
|  | 43     else: | 
|  | 44         entropy = '' | 
|  | 45     if options.fixed: | 
|  | 46         fixed = '--fixed' | 
|  | 47     else: | 
|  | 48         fixed = '' | 
|  | 49     if options.min_len is not None: | 
|  | 50         min_len = '--min_len %d' % (options.min_len) | 
|  | 51     else: | 
|  | 52         min_len = '' | 
|  | 53     if options.ignore: | 
|  | 54         ignore = '--ignore %s' % (options.ignore) | 
|  | 55     else: | 
|  | 56         ignore = '' | 
|  | 57     if options.linear: | 
|  | 58         linear = '--linear' | 
|  | 59     else: | 
|  | 60         linear = '' | 
|  | 61     if options.length_opt: | 
|  | 62         length_opt = '--length_opt' | 
|  | 63     else: | 
|  | 64         length_opt = '' | 
|  | 65     if options.no_header: | 
|  | 66         no_header = '--no_header' | 
|  | 67     else: | 
|  | 68         no_header = '' | 
|  | 69     if options.max_olap is not None: | 
|  | 70         max_olap = '--max_olap %d' % (options.max_olap) | 
|  | 71     else: | 
|  | 72         max_olap = '' | 
|  | 73     if options.cutoff is not None: | 
|  | 74         cutoff = '--cutoff %s' % (options.cutoff) | 
|  | 75     else: | 
|  | 76         cutoff = '' | 
|  | 77     if options.without_stops: | 
|  | 78         without_stops = '--without_stops' | 
|  | 79     else: | 
|  | 80         without_stops = '' | 
|  | 81     if options.trans_table is not None: | 
|  | 82         trans_table = '--trans_table %s' % (options.trans_table) | 
|  | 83     else: | 
|  | 84         trans_table = '' | 
|  | 85     if options.stop_codons: | 
|  | 86         stop_codons = '--stop_codons %s' % (options.stop_codons) | 
|  | 87     else: | 
|  | 88         stop_codons = '' | 
|  | 89     output = options.output | 
|  | 90     logfile = options.logfile | 
|  | 91 | 
|  | 92     # Build Long-ORFs command | 
|  | 93     cmd = 'long-orfs %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s' % (sequence, start_codons, entropy, fixed, min_len, ignore, linear, length_opt, no_header, max_olap, cutoff, without_stops, trans_table, stop_codons, output) | 
|  | 94     print '\nLong-ORFs command to be executed: \n %s' % (cmd) | 
|  | 95 | 
|  | 96     print 'Executing Long-ORFs...' | 
|  | 97     if logfile: | 
|  | 98         log = open(logfile, 'w') | 
|  | 99     else: | 
|  | 100         log = sys.stdout | 
|  | 101     try: | 
|  | 102         subprocess.check_call(cmd, stdout=log, stderr=subprocess.STDOUT, shell=True) | 
|  | 103     finally: | 
|  | 104         if log != sys.stdout: | 
|  | 105             log.close() | 
|  | 106     print 'Long-ORFs executed!' | 
|  | 107 | 
|  | 108 | 
|  | 109 if __name__ == "__main__": | 
|  | 110     __main__() |