/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
- #!/usr/bin/env python
- """
- Converts SOLiD data to Sanger FASTQ format.
- usage: %prog [options]
- -i, --input1=i: Forward reads file
- -q, --input2=q: Forward qual file
- -I, --input3=I: Reverse reads file
- -Q, --input4=Q: Reverse qual file
- -o, --output1=o: Forward output
- -r, --output2=r: Reverse output
- usage: %prog forward_reads_file forwards_qual_file reverse_reads_file(or_None) reverse_qual_file(or_None) output_file ouptut_id output_dir
- """
- import os, sys, tempfile
- from galaxy import eggs
- import pkg_resources; pkg_resources.require( "bx-python" )
- from bx.cookbook import doc_optparse
- def stop_err( msg ):
- sys.stderr.write( "%s\n" % msg )
- sys.exit()
-
- def replaceNeg1(fin, fout):
- line = fin.readline()
- while line.strip():
- fout.write(line.replace('-1', '1'))
- line = fin.readline()
- fout.seek(0)
- return fout
-
- def __main__():
- #Parse Command Line
- options, args = doc_optparse.parse( __doc__ )
- # common temp file setup
- tmpf = tempfile.NamedTemporaryFile() #forward reads
- tmpqf = tempfile.NamedTemporaryFile()
- tmpqf = replaceNeg1(file(options.input2,'r'), tmpqf)
- # if paired-end data (have reverse input files)
- if options.input3 != "None" and options.input4 != "None":
- tmpr = tempfile.NamedTemporaryFile() #reverse reads
- # replace the -1 in the qualities file
- tmpqr = tempfile.NamedTemporaryFile()
- tmpqr = replaceNeg1(file(options.input4,'r'), tmpqr)
- 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)
- try:
- os.system(cmd1)
- os.system('gunzip -c %s >> %s' %(tmpf.name,options.output1))
- os.system('gunzip -c %s >> %s' %(tmpr.name,options.output2))
- except Exception, eq:
- stop_err("Error converting data to fastq format.\n" + str(eq))
- tmpr.close()
- tmpqr.close()
- # if single-end data
- else:
- 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)
- try:
- os.system(cmd1)
- os.system('gunzip -c %s >> %s' % (tmpf.name, options.output1))
- except Exception, eq:
- stop_err("Error converting data to fastq format.\n" + str(eq))
- tmpqf.close()
- tmpf.close()
- sys.stdout.write('converted SOLiD data')
- if __name__=="__main__": __main__()