From 21fc2958603548ee149cb2f354b71276e37e47c9 Mon Sep 17 00:00:00 2001 From: Jayaram Kancherla Date: Mon, 31 Aug 2026 21:05:29 -0700 Subject: [PATCH 1/2] don't use pandas for coercion --- .../RangedSummarizedExperiment.py | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/summarizedexperiment/RangedSummarizedExperiment.py b/src/summarizedexperiment/RangedSummarizedExperiment.py index 3414ea5..293888f 100644 --- a/src/summarizedexperiment/RangedSummarizedExperiment.py +++ b/src/summarizedexperiment/RangedSummarizedExperiment.py @@ -980,17 +980,33 @@ def to_summarizedexperiment(self): import copy if isinstance(self._row_ranges, CompressedGenomicRangesList): - df = self._row_ranges.get_unlist_data().to_pandas() + gr = self._row_ranges.get_unlist_data() else: - df = self._row_ranges.to_pandas() - - range_bf = biocframe.BiocFrame.from_pandas(df) - if new_row_data is None or new_row_data.shape[0] == 0: + gr = self._row_ranges + + range_dict = { + "seqnames": gr.get_seqnames(), + "starts": gr.get_start(), + "ends": gr.get_end(), + "strand": gr.get_strand(as_type="list"), + } + + if gr.mcols is not None: + for col in gr.mcols.column_names: + range_dict[col] = gr.mcols.column(col) + + range_bf = biocframe.BiocFrame( + range_dict, + number_of_rows=len(gr), + row_names=gr.get_names() + ) + + if new_row_data is None or new_row_data.shape[0] == 0 or len(new_row_data.column_names) == 0: new_row_data = range_bf else: new_row_data = copy.copy(new_row_data) for col in range_bf.column_names: - new_row_data[col] = range_bf[col] + new_row_data.set_column(col, range_bf.column(col), in_place=True) except Exception as e: warn(f"Failed to transfer row_ranges to row_data: {e}", UserWarning) From 592f5f93d997842ea3594a356a1e19a165609a67 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 1 Sep 2026 04:06:10 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/summarizedexperiment/RangedSummarizedExperiment.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/summarizedexperiment/RangedSummarizedExperiment.py b/src/summarizedexperiment/RangedSummarizedExperiment.py index 293888f..e13f038 100644 --- a/src/summarizedexperiment/RangedSummarizedExperiment.py +++ b/src/summarizedexperiment/RangedSummarizedExperiment.py @@ -995,11 +995,7 @@ def to_summarizedexperiment(self): for col in gr.mcols.column_names: range_dict[col] = gr.mcols.column(col) - range_bf = biocframe.BiocFrame( - range_dict, - number_of_rows=len(gr), - row_names=gr.get_names() - ) + range_bf = biocframe.BiocFrame(range_dict, number_of_rows=len(gr), row_names=gr.get_names()) if new_row_data is None or new_row_data.shape[0] == 0 or len(new_row_data.column_names) == 0: new_row_data = range_bf