/tools/sr_assembly/velveth_wrapper.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 65 lines · 51 code · 7 blank · 7 comment · 11 complexity · f8a277dc6760ba1dc136971a772d68c2 MD5 · raw file

  1. #!/usr/bin/env python
  2. """
  3. Classes encapsulating decypher tool.
  4. James E Johnson - University of Minnesota
  5. """
  6. import pkg_resources
  7. import logging, os, string, sys, tempfile, glob, shutil, types, urllib
  8. import shlex, subprocess
  9. from optparse import OptionParser, OptionGroup
  10. from stat import *
  11. log = logging.getLogger( __name__ )
  12. assert sys.version_info[:2] >= ( 2, 4 )
  13. def stop_err( msg ):
  14. sys.stderr.write( "%s\n" % msg )
  15. sys.exit()
  16. def __main__():
  17. #Parse Command Line
  18. s = 'velveth_wrapper.py: argv = %s\n' % (sys.argv)
  19. argcnt = len(sys.argv)
  20. html_file = sys.argv[1]
  21. working_dir = sys.argv[2]
  22. try: # for test - needs this done
  23. os.makedirs(working_dir)
  24. except Exception, e:
  25. stop_err( 'Error running velveth ' + str( e ) )
  26. hash_length = sys.argv[3]
  27. inputs = string.join(sys.argv[4:],' ')
  28. cmdline = 'velveth %s %s %s > /dev/null' % (working_dir, hash_length, inputs)
  29. try:
  30. proc = subprocess.Popen( args=cmdline, shell=True, stderr=subprocess.PIPE )
  31. returncode = proc.wait()
  32. # get stderr, allowing for case where it's very large
  33. stderr = ''
  34. buffsize = 1048576
  35. try:
  36. while True:
  37. stderr += proc.stderr.read( buffsize )
  38. if not stderr or len( stderr ) % buffsize != 0:
  39. break
  40. except OverflowError:
  41. pass
  42. if returncode != 0:
  43. raise Exception, stderr
  44. except Exception, e:
  45. stop_err( 'Error running velveth ' + str( e ) )
  46. sequences_path = os.path.join(working_dir,'Sequences')
  47. roadmaps_path = os.path.join(working_dir,'Roadmaps')
  48. rval = ['<html><head><title>Velvet Galaxy Composite Dataset </title></head><p/>']
  49. rval.append('<div>%s<p/></div>' % (cmdline) )
  50. rval.append('<div>This composite dataset is composed of the following files:<p/><ul>')
  51. rval.append( '<li><a href="%s" type="text/plain">%s </a>%s</li>' % (sequences_path,'Sequences','Sequences' ) )
  52. rval.append( '<li><a href="%s" type="text/plain">%s </a>%s</li>' % (roadmaps_path,'Roadmaps','Roadmaps' ) )
  53. rval.append( '</ul></div></html>' )
  54. f = file(html_file,'w')
  55. f.write("\n".join( rval ))
  56. f.write('\n')
  57. f.close()
  58. if __name__ == "__main__": __main__()