Source code for yt.data_objects.selection_objects.region
from yt.data_objects.selection_objects.data_selection_objects import (
YTSelectionContainer,
YTSelectionContainer3D,
)
from yt.data_objects.static_output import Dataset
from yt.funcs import (
validate_3d_array,
validate_center,
validate_object,
validate_sequence,
)
from yt.units import YTArray
[docs]
class YTRegion(YTSelectionContainer3D):
"""A 3D region of data with an arbitrary center.
Takes an array of three *left_edge* coordinates, three
*right_edge* coordinates, and a *center* that can be anywhere
in the domain. If the selected region extends past the edges
of the domain, no data will be found there, though the
object's `left_edge` or `right_edge` are not modified.
Parameters
----------
center : array_like
The center of the region
left_edge : array_like
The left edge of the region
right_edge : array_like
The right edge of the region
"""
_type_name = "region"
_con_args = ("center", "left_edge", "right_edge")
def __init__(
self,
center,
left_edge,
right_edge,
fields=None,
ds=None,
field_parameters=None,
data_source=None,
):
if center is not None:
validate_center(center)
validate_3d_array(left_edge)
validate_3d_array(right_edge)
validate_sequence(fields)
validate_object(ds, Dataset)
validate_object(field_parameters, dict)
validate_object(data_source, YTSelectionContainer)
YTSelectionContainer3D.__init__(self, center, ds, field_parameters, data_source)
if not isinstance(left_edge, YTArray):
self.left_edge = self.ds.arr(left_edge, "code_length", dtype="float64")
else:
# need to assign this dataset's unit registry to the YTArray
self.left_edge = self.ds.arr(left_edge.copy(), dtype="float64")
if not isinstance(right_edge, YTArray):
self.right_edge = self.ds.arr(right_edge, "code_length", dtype="float64")
else:
# need to assign this dataset's unit registry to the YTArray
self.right_edge = self.ds.arr(right_edge.copy(), dtype="float64")
def _get_bbox(self):
"""
Return the minimum bounding box for the region.
"""
return self.left_edge.copy(), self.right_edge.copy()