Skip to content

Commit b1911f7

Browse files
authored
Merge pull request #557 from dmalzl/master
respect dtypes of input file
2 parents aedd531 + 072819c commit b1911f7

3 files changed

Lines changed: 16 additions & 1 deletion

File tree

cooltools/api/rearrange.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,8 @@ def rearrange_cooler(
202202
bins_old, view_df, new_chrom_col=new_chrom_col, orientation_col=orientation_col
203203
)
204204
logging.info("Creating a new cooler")
205+
# fetching pixel dtypes to avoid implicit casts of count column
206+
dtypes = clr.pixels().dtypes.to_dict()
205207
cooler.create_cooler(
206208
out_cooler,
207209
bins_new,
@@ -210,6 +212,7 @@ def rearrange_cooler(
210212
bin_mapping,
211213
chunksize=chunksize,
212214
),
215+
dtypes = dtypes,
213216
assembly=assembly,
214217
mode=mode,
215218
mergebuf=int(2e7),

tests/data/float_counts.cool

3.92 MB
Binary file not shown.

tests/test_rearrange_cooler.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def test_rearrange_cooler(request):
6262

6363
# III.
6464
# Check that when taking two chromosomes in a different order and inverting one,
65-
# all is ax espected
65+
# all is as espected
6666

6767
reorder_invert_view = (
6868
orig_view.iloc[1::-1].assign(strand=["+", "-"]).reset_index(drop=True)
@@ -136,3 +136,15 @@ def test_rearrange_cooler(request):
136136
::-1, :
137137
]
138138
assert np.array_equal(old_trans_m, reordered_inverted_trans_m, equal_nan=True)
139+
140+
# IV.
141+
# Check that pixel datatypes are propagated to output cooler
142+
float_clr = cooler.Cooler(op.join(request.fspath.dirname, "data/float_counts.cool"))
143+
new_view = bioframe.make_viewframe(float_clr.chromsizes)
144+
rearrange_cooler(float_clr, new_view, "test_propagated_datatypes.cool")
145+
146+
propagate_clr = cooler.Cooler("test_propagated_datatypes.cool")
147+
assert_frame_equal(
148+
float_clr.pixels()[:],
149+
propagate_clr.pixels()[:]
150+
)

0 commit comments

Comments
 (0)