/tools/next_gen_conversion/solid_to_fastq.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 68 lines · 43 code · 6 blank · 19 comment · 9 complexity · b8a667a9e999b2921750549a36faaf8d MD5 · raw file

  1. #!/usr/bin/env python
  2. """
  3. Converts SOLiD data to Sanger FASTQ format.
  4. usage: %prog [options]
  5. -i, --input1=i: Forward reads file
  6. -q, --input2=q: Forward qual file
  7. -I, --input3=I: Reverse reads file
  8. -Q, --input4=Q: Reverse qual file
  9. -o, --output1=o: Forward output
  10. -r, --output2=r: Reverse output
  11. usage: %prog forward_reads_file forwards_qual_file reverse_reads_file(or_None) reverse_qual_file(or_None) output_file ouptut_id output_dir
  12. """
  13. import os, sys, tempfile
  14. from galaxy import eggs
  15. import pkg_resources; pkg_resources.require( "bx-python" )
  16. from bx.cookbook import doc_optparse
  17. def stop_err( msg ):
  18. sys.stderr.write( "%s\n" % msg )
  19. sys.exit()
  20. def replaceNeg1(fin, fout):
  21. line = fin.readline()
  22. while line.strip():
  23. fout.write(line.replace('-1', '1'))
  24. line = fin.readline()
  25. fout.seek(0)
  26. return fout
  27. def __main__():
  28. #Parse Command Line
  29. options, args = doc_optparse.parse( __doc__ )
  30. # common temp file setup
  31. tmpf = tempfile.NamedTemporaryFile() #forward reads
  32. tmpqf = tempfile.NamedTemporaryFile()
  33. tmpqf = replaceNeg1(file(options.input2,'r'), tmpqf)
  34. # if paired-end data (have reverse input files)
  35. if options.input3 != "None" and options.input4 != "None":
  36. tmpr = tempfile.NamedTemporaryFile() #reverse reads
  37. # replace the -1 in the qualities file
  38. tmpqr = tempfile.NamedTemporaryFile()
  39. tmpqr = replaceNeg1(file(options.input4,'r'), tmpqr)
  40. cmd1 = "%s/bwa_solid2fastq_modified.pl 'yes' %s %s %s %s %s %s 2>&1" %(os.path.split(sys.argv[0])[0], tmpf.name, tmpr.name, options.input1, tmpqf.name, options.input3, tmpqr.name)
  41. try:
  42. os.system(cmd1)
  43. os.system('gunzip -c %s >> %s' %(tmpf.name,options.output1))
  44. os.system('gunzip -c %s >> %s' %(tmpr.name,options.output2))
  45. except Exception, eq:
  46. stop_err("Error converting data to fastq format.\n" + str(eq))
  47. tmpr.close()
  48. tmpqr.close()
  49. # if single-end data
  50. else:
  51. cmd1 = "%s/bwa_solid2fastq_modified.pl 'no' %s %s %s %s %s %s 2>&1" % (os.path.split(sys.argv[0])[0], tmpf.name, None, options.input1, tmpqf.name, None, None)
  52. try:
  53. os.system(cmd1)
  54. os.system('gunzip -c %s >> %s' % (tmpf.name, options.output1))
  55. except Exception, eq:
  56. stop_err("Error converting data to fastq format.\n" + str(eq))
  57. tmpqf.close()
  58. tmpf.close()
  59. sys.stdout.write('converted SOLiD data')
  60. if __name__=="__main__": __main__()