From decac2e21c655976e9564a08db7e77d6d40f1590 Mon Sep 17 00:00:00 2001 From: "Eric T. Johnson" Date: Mon, 3 Feb 2025 19:29:44 -0500 Subject: [PATCH] BUG: fix NaNs in off-center FRB slices from ds.r --- yt/data_objects/region_expression.py | 6 +++++- yt/data_objects/tests/test_dataset_access.py | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/yt/data_objects/region_expression.py b/yt/data_objects/region_expression.py index be65a5a9263..070b4fb4ec0 100644 --- a/yt/data_objects/region_expression.py +++ b/yt/data_objects/region_expression.py @@ -138,7 +138,11 @@ def _create_slice(self, slice_tuple): height = source.right_edge[yax] - source.left_edge[yax] # Make a resolution tuple with resolution = (int(new_slice[xax].step.imag), int(new_slice[yax].step.imag)) - sl = sl.to_frb(width=width, resolution=resolution, height=height) + # Use the center of the slice, not the entire domain + center = source.center + sl = sl.to_frb( + width=width, resolution=resolution, height=height, center=center + ) return sl def _slice_to_edges(self, ax, val): diff --git a/yt/data_objects/tests/test_dataset_access.py b/yt/data_objects/tests/test_dataset_access.py index 95c2a1e9a1e..383e69ef502 100644 --- a/yt/data_objects/tests/test_dataset_access.py +++ b/yt/data_objects/tests/test_dataset_access.py @@ -112,6 +112,19 @@ def test_slice_from_r(): frb4 = ds.r[0.5, 0.25:0.75:1024j, 0.25:0.75:512j] assert_equal(frb3["gas", "density"], frb4["gas", "density"]) + # Test off-center slice + offset_box = ds.box([0.0, 0.0, 0.4], [1.0, 0.5, 0.9]) + + sl5 = ds.r[0.5, 0:0.5, 0.4:0.9] + sl6 = ds.slice("x", 0.5, data_source=offset_box) + assert_equal(sl5["gas", "density"], sl6["gas", "density"]) + + frb5 = sl5.to_frb( + width=0.5, height=0.5, resolution=(1024, 512), center=(0.5, 0.25, 0.65) + ) + frb6 = ds.r[0.5, 0.0:0.5:1024j, 0.4:0.9:512j] + assert_equal(frb5["gas", "density"], frb6["gas", "density"]) + def test_point_from_r(): ds = fake_amr_ds(fields=["density"], units=["g/cm**3"])