Mercurial > repos > crs4 > edena
comparison edena_ass_wrapper.py @ 0:60609a9cef3b draft
Uploaded
author | crs4 |
---|---|
date | Mon, 09 Sep 2013 05:44:31 -0400 |
parents | |
children | cd6cc6d76708 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:60609a9cef3b |
---|---|
1 # -*- coding: utf-8 -*- | |
2 """ | |
3 Edena (assembling) | |
4 version 0.2.1 (andrea.pinna@crs4.it) | |
5 """ | |
6 | |
7 import optparse | |
8 import shutil | |
9 import subprocess | |
10 import sys | |
11 | |
12 def __main__(): | |
13 # load arguments | |
14 print 'Parsing Edena (assembling) input options...' | |
15 parser = optparse.OptionParser(description='Edena assembly') | |
16 parser.add_option('--ovl_input', dest='ovl_input', help='') | |
17 parser.add_option('--overlapCutoff', dest='overlapCutoff', type='int', help='') | |
18 parser.add_option('--cc', action="store_true", dest='cc', help='') | |
19 parser.add_option('--discardNonUsable', action="store_true", dest='discardNonUsable', help='') | |
20 parser.add_option('--minContigSize', dest='minContigSize', type='int', help='') | |
21 parser.add_option('--minCoverage', dest='minCoverage', type='float', help='') | |
22 parser.add_option('--trim', dest='trim', type='int', help='') | |
23 parser.add_option('--peHorizon', dest='peHorizon', type='int', help='') | |
24 parser.add_option('--covStats', dest='covStats', help='') | |
25 parser.add_option('--out_contigs_cov', dest='out_contigs_cov', help='') | |
26 parser.add_option('--out_contigs_fasta', dest='out_contigs_fasta', help='') | |
27 parser.add_option('--out_contigs_lay', dest='out_contigs_lay', help='') | |
28 parser.add_option('--out_log_txt', dest='out_log_txt', help='') | |
29 parser.add_option('--out_nodesInfo', dest='out_nodesInfo', help='') | |
30 parser.add_option('--out_nodesPosition', dest='out_nodesPosition', help='') | |
31 parser.add_option('--logfile', dest='logfile', help='logfile') | |
32 (options, args) = parser.parse_args() | |
33 if len(args) > 0: | |
34 parser.error('Wrong number of arguments') | |
35 | |
36 # build Edena (assembling) command to be executed | |
37 ovl_input = '-e %s' % (options.ovl_input) | |
38 if options.overlapCutoff is not None: | |
39 overlapCutoff = '-m %d' % (options.overlapCutoff) | |
40 else: | |
41 overlapCutoff = '' | |
42 if options.cc: | |
43 cc = '-cc yes' | |
44 else: | |
45 cc = '-cc no' | |
46 if options.discardNonUsable: | |
47 discardNonUsable = '-discardNonUsable yes' | |
48 else: | |
49 discardNonUsable = '-discardNonUsable no' | |
50 if options.minContigSize is not None: | |
51 minContigSize = '-c %d' % (options.minContigSize) | |
52 else: | |
53 minContigSize = '' | |
54 if options.minCoverage is not None: | |
55 minCoverage = '-minCoverage %s' % (options.minCoverage) | |
56 else: | |
57 minCoverage = '' | |
58 if options.trim is not None: | |
59 trim = '-trim %d' % (options.trim) | |
60 else: | |
61 trim = '' | |
62 if options.peHorizon is not None: | |
63 peHorizon = '-peHorizon %d' % (options.peHorizon) | |
64 else: | |
65 peHorizon = '' | |
66 covStats = options.covStats | |
67 out_contigs_cov = options.out_contigs_cov | |
68 out_contigs_fasta = options.out_contigs_fasta | |
69 out_contigs_lay = options.out_contigs_lay | |
70 out_log_txt = options.out_log_txt | |
71 out_nodesInfo = options.out_nodesInfo | |
72 out_nodesPosition = options.out_nodesPosition | |
73 logfile = options.logfile | |
74 | |
75 # Build Edena (assembling) command | |
76 cmd1 = '%s %s %s %s %s %s %s %s' % (ovl_input, overlapCutoff, cc, discardNonUsable, minContigSize, minCoverage, trim, peHorizon) | |
77 cmd2 = 'edena %s' % ( cmd1 ) | |
78 print '\nEdena (assembling) command to be executed: \n %s' % ( cmd2 ) | |
79 | |
80 # Execution of Edena | |
81 print 'Executing Edena (assembling)...' | |
82 if logfile: | |
83 log = open(logfile, 'w') | |
84 else: | |
85 log = sys.stdout | |
86 try: | |
87 subprocess.check_call(cmd2, stdout=log, stderr=subprocess.STDOUT, shell=True) # need to redirect stderr because edena writes some logging info there (e.g. "Condensing overlaps graph...") | |
88 finally: | |
89 if log != sys.stdout: | |
90 log.close() | |
91 print 'Edena (assembling) executed!' | |
92 | |
93 shutil.move("covStats", covStats) | |
94 shutil.move("out_contigs.cov", out_contigs_cov) | |
95 shutil.move("out_contigs.fasta", out_contigs_fasta) | |
96 shutil.move("out_contigs.lay", out_contigs_lay) | |
97 shutil.move("out_log.txt", out_log_txt) | |
98 shutil.move("out_nodesInfo", out_nodesInfo) | |
99 shutil.move("out_nodesPosition", out_nodesPosition) | |
100 | |
101 | |
102 if __name__ == "__main__": | |
103 __main__() |