Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `LinePixelRegion`
Rotated region (an independent copy)
"""
start = self.start.rotate(center, angle)
end = self.end.rotate(center, angle)
return self.copy(start=start, end=end)
class LineSkyRegion(SkyRegion):
"""
A line in sky coordinates.
Parameters
----------
start : `~astropy.coordinates.SkyCoord`
Start position
end : `~astropy.coordinates.SkyCoord`
End position
meta : `~regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
_params = ('start', 'end')
start = ScalarSky('start')
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `CompoundPixelRegion`
Rotated region (an independent copy)
"""
region1 = self.region1.rotate(center, angle)
region2 = self.region2.rotate(center, angle)
return self.copy(region1=region1, region2=region2)
class CompoundSkyRegion(SkyRegion):
"""
Represents the logical combination of two regions in sky coordinates.
Parameters
----------
region1 : `~regions.SkyRegion` object
The inner sky region.
region2 : `~regions.SkyRegion` object
The outer sky region.
operator : `function`
A callable binary operator.
meta : `~regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
@property
def _outer_region(self):
return self._component_class(self.center, self.outer_radius, self.meta, self.visual)
def to_sky(self, wcs):
center = pixel_to_skycoord(self.center.x, self.center.y, wcs)
_, scale, _ = skycoord_to_pixel_scale_angle(center, wcs)
inner_radius = self.inner_radius / scale * u.deg
outer_radius = self.outer_radius / scale * u.deg
return CircleAnnulusSkyRegion(
center, inner_radius, outer_radius, self.meta, self.visual
)
class CircleAnnulusSkyRegion(SkyRegion):
"""
A circular annulus in sky coordinates.
Parameters
----------
center : `~astropy.coordinates.SkyCoord`
The position of the center of the annulus.
inner_radius : `~astropy.units.Quantity`
The inner radius of the annulus in angular units
outer_radius : `~astropy.units.Quantity`
The outer radius of the annulus in angular units
meta : `~regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
----------
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `CirclePixelRegion`
Rotated region (an independent copy)
"""
center = self.center.rotate(center, angle)
return self.copy(center=center)
class CircleSkyRegion(SkyRegion):
"""
A circle defined using sky coordinates.
Parameters
----------
center : `~astropy.coordinates.SkyCoord`
Center position
radius : `~astropy.units.Quantity`
Radius in angular units
meta : `~regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
_params = ('center', 'radius')
center = ScalarSky('center')
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `RectanglePixelRegion`
Rotated region (an independent copy)
"""
center = self.center.rotate(center, angle)
angle = self.angle + angle
return self.copy(center=center, angle=angle)
class RectangleSkyRegion(SkyRegion):
"""
A rectangle in sky coordinates.
Parameters
----------
center : `~astropy.coordinates.SkyCoord`
The position of the center of the rectangle.
width : `~astropy.units.Quantity`
The width of the rectangle (before rotation) as an angle
height : `~astropy.units.Quantity`
The height of the rectangle (before rotation) as an angle
angle : `~astropy.units.Quantity`, optional
The rotation angle of the rectangle, measured anti-clockwise. If set to
zero (the default), the width axis is lined up with the longitude axis
of the celestial coordinates.
meta : `~regions.RegionMeta` object, optional
coord = []
if isinstance(region, SkyRegion):
reg_type = region.__class__.__name__[:-9].lower()
else:
reg_type = region.__class__.__name__[:-11].lower()
for val in regions_attributes[reg_type]:
coord.append(getattr(region, val))
if reg_type == 'polygon':
coord = [x for x in region.vertices]
if coordinate_system:
coordsys = coordinate_system
else:
if isinstance(region, SkyRegion):
coordsys = coord[0].name
else:
coordsys = 'image'
frame = coordinates.frame_transform_graph.lookup_name(coordsys)
new_coord = []
for val in coord:
if isinstance(val, Angle) or isinstance(val, u.Quantity) or isinstance(val, numbers.Number):
new_coord.append(val)
elif isinstance(val, PixCoord):
new_coord.append(u.Quantity(val.x, u.dimensionless_unscaled))
new_coord.append(u.Quantity(val.y, u.dimensionless_unscaled))
else:
new_coord.append(Angle(val.transform_to(frame).spherical.lon))
new_coord.append(Angle(val.transform_to(frame).spherical.lat))
----------
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `PointPixelRegion`
Rotated region (an independent copy)
"""
center = self.center.rotate(center, angle)
return self.copy(center=center)
class PointSkyRegion(SkyRegion):
"""
A pixel region in sky coordinates.
Parameters
----------
center : `~astropy.coordinates.SkyCoord`
The position of the point
meta : `regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
_params = ('center',)
center = ScalarSky('center')
def __init__(self, center, meta=None, visual=None):
----------
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `PolygonPixelRegion`
Rotated region (an independent copy)
"""
vertices = self.vertices.rotate(center, angle)
return self.copy(vertices=vertices)
class PolygonSkyRegion(SkyRegion):
"""
A polygon defined using vertices in sky coordinates.
Parameters
----------
vertices : `~astropy.coordinates.SkyCoord`
The vertices of the polygon
meta : `~regions.RegionMeta` object, optional
A dictionary which stores the meta attributes of this region.
visual : `~regions.RegionVisual` object, optional
A dictionary which stores the visual meta attributes of this region.
"""
_params = ('vertices',)
vertices = OneDSky('vertices')
def __init__(self, vertices, meta=None, visual=None):
)
def to_sky_args(self, wcs):
center = pixel_to_skycoord(self.center.x, self.center.y, wcs)
_, scale, north_angle = skycoord_to_pixel_scale_angle(center, wcs)
inner_width = self.inner_width / scale * u.deg
inner_height = self.inner_height / scale * u.deg
outer_width = self.outer_width / scale * u.deg
outer_height = self.outer_height / scale * u.deg
angle = self.angle - (north_angle - 90 * u.deg)
return center, inner_width, inner_height, outer_width, outer_height, angle
class AsymmetricAnnulusSkyRegion(SkyRegion):
"""Helper class for asymmetric annuli sky regions.
Used for ellipse and rectangle annuli below.
"""
_params = (
"center",
"inner_width",
"inner_height",
"outer_width",
"outer_height",
"angle",
)
center = ScalarSky("center")
inner_width = QuantityLength("inner_width")
outer_width = QuantityLength("outer_width")
inner_height = QuantityLength("inner_height")
center : `PixCoord`
Rotation center point
angle : `~astropy.coordinates.Angle`
Rotation angle
Returns
-------
region : `EllipsePixelRegion`
Rotated region (an independent copy)
"""
center = self.center.rotate(center, angle)
angle = self.angle + angle
return self.copy(center=center, angle=angle)
class EllipseSkyRegion(SkyRegion):
"""
An ellipse defined using sky coordinates.
Parameters
----------
center : `~astropy.coordinates.SkyCoord`
The position of the center of the ellipse.
width : `~astropy.units.Quantity`
The width of the ellipse (before rotation) as an angle
height : `~astropy.units.Quantity`
The height of the ellipse (before rotation) as an angle
angle : `~astropy.units.Quantity`, optional
The rotation angle of the ellipse, measured anti-clockwise. If set to
zero (the default), the width axis is lined up with the longitude axis
of the celestial coordinates.
meta : `~regions.RegionMeta` object, optional