0
|
1 #!/usr/bin/env python
|
|
2
|
|
3 """
|
|
4 Classes encapsulating decypher tool.
|
|
5 James E Johnson - University of Minnesota
|
|
6 """
|
|
7 import os
|
|
8 import sys
|
|
9 import subprocess
|
|
10
|
|
11 assert sys.version_info[:2] >= ( 2, 4 )
|
|
12
|
|
13 def stop_err( msg ):
|
|
14 sys.stderr.write( "%s\n" % msg )
|
|
15 sys.exit()
|
|
16
|
|
17
|
|
18 def __main__():
|
|
19 #Parse Command Line
|
|
20 working_dir = sys.argv[1]
|
|
21 inputs = ' '.join(sys.argv[2:])
|
|
22 for _ in ('Roadmaps', 'Sequences'):
|
|
23 os.symlink(os.path.join(working_dir, _), _)
|
|
24 cmdline = 'velvetg . %s' % (inputs)
|
|
25 print "Command to be executed: %s" % cmdline
|
|
26 try:
|
|
27 proc = subprocess.Popen( args=cmdline, shell=True, stderr=subprocess.PIPE )
|
|
28 returncode = proc.wait()
|
|
29 # get stderr, allowing for case where it's very large
|
|
30 stderr = ''
|
|
31 buffsize = 1048576
|
|
32 try:
|
|
33 while True:
|
|
34 stderr += proc.stderr.read( buffsize )
|
|
35 if not stderr or len( stderr ) % buffsize != 0:
|
|
36 break
|
|
37 except OverflowError:
|
|
38 pass
|
|
39 if returncode != 0:
|
|
40 raise Exception, stderr
|
|
41 except Exception, e:
|
|
42 stop_err( 'Error running velvetg ' + str( e ) )
|
|
43
|
|
44
|
|
45 if __name__ == "__main__":
|
|
46 __main__()
|