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