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__()