Skip to content

Commit 61eea6a

Browse files
committed
Write out multi-read mappability wig files using buffered IO and bytes
1 parent d82c055 commit 61eea6a

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

newmap/unique_counts_conversion.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from pathlib import Path
22
import sys
3-
from typing import TextIO, Union
3+
from typing import BinaryIO, Union
44

55
from newmap.util import verbose_print
66

@@ -87,14 +87,16 @@ def write_single_read_bed(bed_file: TextIO,
8787
current_value))
8888

8989

90-
def write_multi_read_wig(wig_file: TextIO,
90+
def write_multi_read_wig(wig_file: BinaryIO,
9191
multi_read_mappability: npt.NDArray[np.float64],
9292
chr_name: str):
9393

9494
# Write out the fixedStep declaration
95-
wig_file.write(WIG_FIXED_STEP_DECLARATION_FORMAT.format(chr_name, 1))
96-
for value in multi_read_mappability:
97-
wig_file.write("{}\n".format(value))
95+
wig_file.write(WIG_FIXED_STEP_DECLARATION_FORMAT
96+
.format(chr_name, 1)
97+
.encode())
98+
wig_file.write(b''.join(multi_read_mappability.astype(bytes) + b'\n'))
99+
wig_file.flush()
98100

99101

100102
def write_mappability_files(unique_count_filenames: list[Path],
@@ -178,11 +180,12 @@ def write_mappability_files(unique_count_filenames: list[Path],
178180
f" to {multi_read_wig_filename}")
179181

180182
if multi_read_wig_filename == STDOUT_FILENAME:
181-
write_multi_read_wig(sys.stdout,
183+
write_multi_read_wig(sys.stdout.buffer,
182184
multi_read_mappability,
183185
chr_name)
184186
else:
185-
with open(multi_read_wig_filename, "a") as multi_read_wig_file:
187+
with open(multi_read_wig_filename, "ab") as \
188+
multi_read_wig_file:
186189
write_multi_read_wig(multi_read_wig_file,
187190
multi_read_mappability,
188191
chr_name)

0 commit comments

Comments
 (0)