annotate tools/fastq/fastq_to_tabular.py @ 0:9071e359b9a3

Uploaded
author xuebing
date Fri, 09 Mar 2012 19:37:19 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
1 #Dan Blankenberg
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
2 import sys
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
3 from galaxy_utils.sequence.fastq import fastqReader
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
4
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
5 def stop_err( msg ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
6 sys.stderr.write( msg )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
7 sys.exit()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
8
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
9 def main():
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
10 if len(sys.argv) != 5:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
11 stop_err("Wrong number of arguments. Expect: fasta tabular desrc_split [type]")
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
12 input_filename = sys.argv[1]
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
13 output_filename = sys.argv[2]
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
14 descr_split = int( sys.argv[3] ) - 1
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
15 if descr_split < 0:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
16 stop_err("Bad description split value (should be 1 or more)")
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
17 input_type = sys.argv[4] or 'sanger' #input type should ordinarily be unnecessary
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
18
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
19 num_reads = None
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
20 fastq_read = None
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
21 out = open( output_filename, 'wb' )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
22 if descr_split == 0:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
23 #Don't divide the description into multiple columns
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
24 for num_reads, fastq_read in enumerate( fastqReader( open( input_filename ), format = input_type ) ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
25 out.write( "%s\t%s\t%s\n" % ( fastq_read.identifier[1:].replace( '\t', ' ' ), fastq_read.sequence.replace( '\t', ' ' ), fastq_read.quality.replace( '\t', ' ' ) ) )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
26 else:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
27 for num_reads, fastq_read in enumerate( fastqReader( open( input_filename ), format = input_type ) ):
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
28 words = fastq_read.identifier[1:].replace( '\t', ' ' ).split(None, descr_split)
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
29 #pad with empty columns if required
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
30 words += [""]*(descr_split-len(words))
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
31 out.write( "%s\t%s\t%s\n" % ("\t".join(words), fastq_read.sequence.replace( '\t', ' ' ), fastq_read.quality.replace( '\t', ' ' ) ) )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
32 out.close()
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
33 if num_reads is None:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
34 print "No valid FASTQ reads could be processed."
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
35 else:
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
36 print "%i FASTQ reads were converted to Tabular." % ( num_reads + 1 )
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
37
9071e359b9a3 Uploaded
xuebing
parents:
diff changeset
38 if __name__ == "__main__": main()