Skip to content

Commit d6061bd

Browse files
committed
convert to python3 style print
1 parent 270db1a commit d6061bd

11 files changed

Lines changed: 73 additions & 66 deletions

bin/split_bam.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pysam
44
import argparse
5-
from sequencing_tools.split_N_bam import parse_bam
5+
from sequencing_tools.split_bam_tools import split_N_bam
66

77
def getopt():
88
parser = argparse.ArgumentParser(description = 'Splitting paired-end bam into two bam files: '+\
@@ -23,7 +23,7 @@ def main():
2323
with pysam.Samfile(args.in_bam, 'rb') as inbam:
2424
with pysam.Samfile(split_bam,'wb',template = inbam) as out_split_bam, \
2525
pysam.Samfile(other_bam, 'wb', template = inbam) as out_fragment_bam:
26-
parse_bam(inbam, out_split_bam, out_fragment_bam)
26+
split_N_bam(inbam, out_split_bam, out_fragment_bam)
2727
return 0
2828

2929

sequencing_tools/bam_cluster.pyx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env python
22

3+
from __future__ import print_function
34
from matplotlib import use as mpl_use
45
mpl_use('Agg')
56
import numpy as np
@@ -80,7 +81,7 @@ def plot_bc_member(member_count, filename):
8081
p.set_xlabels('Member in barcode family')
8182
p.set_ylabels('Barcode count')
8283
p.savefig(figurename)
83-
sys.stderr.write('Plotted: %s\n' %figurename)
84+
print('Plotted: %s' %figurename, file = sys.stderr)
8485

8586

8687
def cluster_bam(tag, bool conserved, AlignmentFile in_bam, out_fastq):
@@ -123,7 +124,7 @@ def cluster_bam(tag, bool conserved, AlignmentFile in_bam, out_fastq):
123124
# reinitialize group
124125
read_group = readGroup(aln, tag)
125126
if iter_count % 5000000 == 0 and iter_count != 0:
126-
sys.stderr.write('Parsed %i alignments\n' %iter_count)
127+
print('Parsed %i alignments' %iter_count, file = sys.stderr)
127128

128129
#spit out the rest in the stupid list
129130
read_group.cluster(conserved)

sequencing_tools/cluster_reads.pyx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
1+
from __future__ import print_function
22
import numpy as np
33
from matplotlib import use as mpl_use
44
mpl_use('Agg') # Must be before importing matplotlib.pyplot or pylab
55
import matplotlib.pyplot as plt
6-
from sys import stderr
6+
import sys
77
import cjson
88
import gzip
99
import re
@@ -114,7 +114,7 @@ def plotBCdistribution(barcode_family_count, outputprefix):
114114
ax.spines['right'].set_visible(False)
115115
ax.spines['top'].set_visible(False)
116116
fig.savefig(figurename)
117-
stderr.write('Plotted %s.\n' %figurename)
117+
print('Plotted %s.' %figurename, file = sys.stderr)
118118
return 0
119119

120120
def concensusPairs(table, float fraction_threshold):
@@ -140,7 +140,7 @@ def concensusPairs(table, float fraction_threshold):
140140
def dictToJson(barcode_dict, json_file):
141141
with open(json_file,'w') as f:
142142
[f.write(cjson.encode(items) + '\n') for items in barcode_dict.iteritems()]
143-
stderr.write('written %s' %(json_file) + '\n')
143+
print('written %s' %(json_file) + '\n', file = sys.stderr)
144144
return 0
145145

146146
def errorFreeReads(int min_family_member_count, float fraction_threshold, str json_record):
@@ -165,16 +165,16 @@ def errorFreeReads(int min_family_member_count, float fraction_threshold, str js
165165
member_count = table.shape[0]
166166
if member_count >= min_family_member_count:
167167
sequence_left, quality_left, sequence_right, quality_right = concensusPairs(table, fraction_threshold)
168-
left_record = '%s_%i_readCluster\n%s\n+\n%s\n' %(index, member_count, sequence_left, quality_left)
169-
right_record = '%s_%i_readCluster\n%s\n+\n%s\n' %(index, member_count, sequence_right, quality_right)
168+
left_record = '%s_%i_readCluster\n%s\n+\n%s' %(index, member_count, sequence_left, quality_left)
169+
right_record = '%s_%i_readCluster\n%s\n+\n%s' %(index, member_count, sequence_right, quality_right)
170170
return left_record, right_record
171171
else:
172172
return 'No'
173173

174174
def writeSeqToFiles(read1, read2, output_cluster_count, result):
175175
if result!='No':
176-
read1.write('@cluster%i_%s' %(output_cluster_count, result[0]))
177-
read2.write('@cluster%i_%s' %(output_cluster_count, result[1]))
176+
print('@cluster%i_%s' %(output_cluster_count, result[0]), file = read1)
177+
print('@cluster%i_%s' %(output_cluster_count, result[1]), file = read2)
178178
return 1
179179
else:
180180
return 0
@@ -199,7 +199,7 @@ def writingAndClusteringReads(outputprefix, min_family_member_count, json_file,
199199
output_cluster_count += write_func(output_cluster_count, result)
200200
counter += 1
201201
if counter % 1000000 == 0:
202-
stderr.write('Processed %i read clusters.\n' %(counter))
202+
print('Processed %i read clusters.' %(counter), file = sys.stderr)
203203
pool.close()
204204
pool.join()
205205
return output_cluster_count, read1File, read2File
@@ -317,7 +317,7 @@ def recordsToDict(str outputprefix, str inFastq1, str inFastq2, int idx_base, in
317317
for read_num, (read1,read2) in iterator:
318318
discarded_sequence_count += cluster_reads(read1, read2)
319319
if read_num % 10000000 == 0:
320-
stderr.write('[%s] Parsed: %i sequence\n' %(programname,read_num))
320+
print('[%s] Parsed: %i sequence' %(programname,read_num), file = sys.stderr)
321321

322322
barcode_count = len(barcode_dict.keys())
323323
return barcode_dict, read_num, barcode_count, discarded_sequence_count

sequencing_tools/filter_multi.pyx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import print_function
12
import pysam
23
from cpython cimport bool
34
import sys
@@ -177,8 +178,8 @@ def process_pair_bam(in_bam, out_bam, bam_in_bool, bam_out_bool):
177178

178179
read_flag = 'rb' if bam_in_bool else 'r'
179180
write_flag = 'wb' if bam_out_bool else 'w'
180-
sys.stderr.write('Start processing bam file: %s\n' %(in_bam))
181-
sys.stderr.write('Writing to: %s\n' %(out_bam))
181+
print('Start processing bam file: %s' %(in_bam), file = sys.stderr)
182+
print('Writing to: %s' %(out_bam), file = sys.stderr)
182183
with pysam.Samfile(in_bam, read_flag) as in_sam:
183184
with pysam.Samfile(out_bam, write_flag, template = in_sam) as out_sam:
184185
for read_count, alignment in enumerate(in_sam):
@@ -205,7 +206,7 @@ def process_pair_bam(in_bam, out_bam, bam_in_bool, bam_out_bool):
205206
out_sam.write(read1_aln)
206207
out_sam.write(read2_aln)
207208
out_read_count += 1
208-
sys.stderr.write('Writting %i read pairs\n' %(out_read_count))
209+
print('Writting %i read pairs' %(out_read_count), file = sys.stderr)
209210
return 0
210211

211212
def process_single_bam(in_bam, out_bam, bam_in_bool, bam_out_bool):
@@ -218,8 +219,8 @@ def process_single_bam(in_bam, out_bam, bam_in_bool, bam_out_bool):
218219

219220
read_flag = 'rb' if bam_in_bool else 'r'
220221
write_flag = 'wb' if bam_out_bool else 'w'
221-
sys.stderr.write('Start processing bam file: %s\n' %(in_bam))
222-
sys.stderr.write('Writing to: %s\n' %(out_bam))
222+
print('Start processing bam file: %s' %(in_bam), file = sys.stderr)
223+
print('Writing to: %s' %(out_bam), file = sys.stderr)
223224
with pysam.Samfile(in_bam, read_flag) as in_sam:
224225
with pysam.Samfile(out_bam, write_flag, template = in_sam) as out_sam:
225226
for read_count, alignment in enumerate(in_sam):
@@ -244,5 +245,5 @@ def process_single_bam(in_bam, out_bam, bam_in_bool, bam_out_bool):
244245

245246
out_sam.write(read_aln)
246247
out_read_count += 1
247-
sys.stderr.write('Writting %i reads\n' %(out_read_count))
248+
print('Writting %i reads' %(out_read_count), file = sys.stderr)
248249
return 0

sequencing_tools/fragment_pairs.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def bam_to_bed(bam_file, out_file, int min_size, int max_size, tag, output_all):
140140
print(line, file=out_file)
141141
except StopIteration:
142142
break
143-
sys.stderr.write('Witten %i pair fragments and %i multiple jump fragments\n' %(pair_count, single_count))
143+
print('Witten %i pair fragments and %i multiple jump fragments' %(pair_count, single_count), file = sys.stderr)
144144
return 0
145145

146146

sequencing_tools/function_clip.pyx

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
from __future__ import print_function
12
from itertools import izip, imap, product
23
from multiprocessing import Pool
34
from functools import partial
45
import numpy as np
56
import gzip
67
cimport numpy as np
7-
from sys import stderr
8+
import sys
89
from cpython cimport bool
910
import io
1011
import os
@@ -198,13 +199,13 @@ def run_pairs(outputprefix, inFastq1, inFastq2, idx_base,
198199
out, prefix, seq_record = clipping(read1, read2)
199200
out_count += out
200201
if out == 1:
201-
file_dict[prefix].write(seq_record + '\n')
202+
print(seq_record, file = file_dict[prefix])
202203
if count % 10000000 == 0 and count != 0:
203-
stderr.write('[%s] Parsed %i records\n'%(programname, count))
204+
print('[%s] Parsed %i records'%(programname, count), file = sys.stderr)
204205
[f.close() for f in file_dict.values()]
205206

206-
stderr.write('[%s] Parsed: %i sequences\n' %(programname, count))
207-
stderr.write('[%s] Output: %i sequences\n' %(programname, out_count))
207+
print('[%s] Parsed: %i sequences' %(programname, count), file = sys.stderr)
208+
print('[%s] Output: %i sequences' %(programname, out_count), file = sys.stderr)
208209
return 0
209210

210211

@@ -240,10 +241,10 @@ def run_pairs_stdout(inFastq1, inFastq2, idx_base,
240241
out, prefix, seq_record = clipping(read1, read2)
241242
out_count += out
242243
if out == 1:
243-
print seq_record
244+
print(seq_record, file = sys.stdout)
244245
if count % 10000000 == 0 and count != 0:
245-
stderr.write('[%s] Parsed %i records\n'%(programname, count))
246+
print('[%s] Parsed %i records'%(programname, count), file = sys.stderr)
246247

247-
stderr.write('[%s] Parsed: %i sequences\n' %(programname, count))
248-
stderr.write('[%s] Output: %i sequences\n' %(programname, out_count))
248+
print('[%s] Parsed: %i sequences' %(programname, count), file = sys.stderr)
249+
print('[%s] Output: %i sequences' %(programname, out_count), file = sys.stderr)
249250
return 0

sequencing_tools/pileup_errors.pyx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from __future__ import print_function
12
from itertools import izip
23
from pysam.libcalignmentfile cimport AlignmentFile, AlignedSegment
34
from cpython cimport bool

sequencing_tools/read_cluster.pyx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from __future__ import division
1+
from __future__ import division, print_function
22
import numpy as np
33
import pysam
44
from itertools import izip, imap

sequencing_tools/split_N_bam.pyx

Lines changed: 0 additions & 28 deletions
This file was deleted.

sequencing_tools/split_bam_tools.pyx

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
from __future__ import print_function
2+
import sys
13
import re
24
from pysam.libcalignmentfile cimport AlignmentFile, AlignedSegment
35
from cpython cimport bool
46
from functools import partial
57
from itertools import izip
68
from sequencing_tools.bam_tools import split_cigar
9+
from sequencing_tools.fragment_pairs import concordant_pairs, is_split_pair
710

811
cdef int softClipSize(AlignedSegment aln):
912
# compare softclip size, output maximum softclipped base on either side
@@ -68,10 +71,10 @@ cpdef int split_bam_pair(AlignmentFile bam, AlignmentFile uniquebam, AlignmentFi
6871
multibam.write(read2)
6972
multi_written += 1
7073
if pair_count % 5000000 == 0:
71-
print 'Parsed %i alignment pairs' %pair_count
74+
print('Parsed %i alignment pairs' %pair_count, file = sys.stderr)
7275
except StopIteration:
7376
break
74-
print 'Written %i to uniq bam, %i to multi bam' %(uniq_written, multi_written)
77+
print('Written %i to uniq bam, %i to multi bam' %(uniq_written, multi_written), file = sys.stderr)
7578
return 0
7679

7780
cpdef int split_bam_single(AlignmentFile bam, AlignmentFile uniquebam, AlignmentFile multibam, aligner):
@@ -92,6 +95,33 @@ cpdef int split_bam_single(AlignmentFile bam, AlignmentFile uniquebam, Alignment
9295
multibam.write(read)
9396
multi_written += 1
9497
if count % 5000000 == 0:
95-
print 'Parsed %i alignment pairs' %count
96-
print 'Written %i to uniq bam, %i to multi bam' %(uniq_written, multi_written)
97-
return 0
98+
print('Parsed %i alignment pairs' %count, file = sys.stderr)
99+
print('Written %i to uniq bam, %i to multi bam' %(uniq_written, multi_written), file = sys.stderr)
100+
return 0
101+
102+
cpdef int split_N_bam(AlignmentFile inbam,
103+
AlignmentFile out_split_bam,
104+
AlignmentFile out_fragment_bam):
105+
cdef:
106+
int split_out = 0
107+
int out = 0
108+
AlignedSegment read1, read2
109+
110+
while True:
111+
try:
112+
read1 = inbam.next()
113+
read2 = inbam.next()
114+
if concordant_pairs(read1, read2):
115+
if is_split_pair(read1, read2):
116+
out_split_bam.write(read1)
117+
out_split_bam.write(read2)
118+
split_out += 2
119+
else:
120+
out_fragment_bam.write(read1)
121+
out_fragment_bam.write(read2)
122+
out += 2
123+
except StopIteration:
124+
break
125+
print('Written %i unsplit and %i split alignments' %(out, split_out), file = sys.stderr)
126+
return 0
127+

0 commit comments

Comments
 (0)