Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
annulus=wcs_shape(CoordOdd, CoordEven, Distance, repeat=(2, 3)),
panda=wcs_shape(CoordOdd, CoordEven, Angle, Angle, Integer, Distance, Distance, Integer),
pie=wcs_shape(CoordOdd, CoordEven,
Distance, Distance,
Angle, Angle),
epanda=wcs_shape(CoordOdd, CoordEven,
Angle, Angle, Integer,
Distance, Distance, Distance,
Distance, Integer, Angle),
bpanda=wcs_shape(CoordOdd, CoordEven,
Angle, Angle, Integer,
Distance, Distance, Distance,
Distance, Integer, Angle),
point=wcs_shape(CoordOdd, CoordEven),
line=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven),
vector=wcs_shape(CoordOdd, CoordEven, Distance, Angle),
text=wcs_shape(CoordOdd, CoordEven),
)
image_like_coordformats = ["image", "physical", "detector", "logical"]
class RegionParser(RegionPusher):
def __init__(self):
RegionPusher.__init__(self)
self.shape_definition = ds9_shape_defs
regionShape = define_shape_helper(self.shape_definition)
regionShape = regionShape.setParseAction(lambda s, l, tok: Shape(tok[0], tok[1:]))
import copy
import warnings
from pyparsing import (Literal, CaselessKeyword, Optional, And, Or,
StringEnd, ParseException)
from .region_numbers import CoordOdd, CoordEven, Distance, Angle, Integer
from .parser_helper import (wcs_shape, define_shape_helper, Shape, Global,
RegionPusher, define_expr, define_line,
CoordCommand,
comment_shell_like, define_simple_literals)
from .ds9_attr_parser import Ds9AttrParser, get_attr
from .wcs_converter import (convert_to_imagecoord,
convert_physical_to_imagecoord)
ds9_shape_defs = dict(
circle=wcs_shape(CoordOdd, CoordEven, Distance),
rotbox=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle),
box=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle),
polygon=wcs_shape(CoordOdd, CoordEven, repeat=(0, 2)),
ellipse=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle, repeat=(2, 4)),
annulus=wcs_shape(CoordOdd, CoordEven, Distance, repeat=(2, 3)),
panda=wcs_shape(CoordOdd, CoordEven, Angle, Angle, Integer, Distance, Distance, Integer),
pie=wcs_shape(CoordOdd, CoordEven,
Distance, Distance,
Angle, Angle),
epanda=wcs_shape(CoordOdd, CoordEven,
Angle, Angle, Integer,
Distance, Distance, Distance,
Distance, Integer, Angle),
bpanda=wcs_shape(CoordOdd, CoordEven,
Angle, Angle, Integer,
Distance, Distance, Distance,
Distance, Integer, Angle),
new_coordlist.extend(
np.asscalar(x)
for x in old_coordinate.to_pixel(new_wcs, origin=1)
)
elif coordinate_type == Distance:
if arg_types[-1] == Angle:
degree_per_pixel = pixel_scales[0 if is_even_distance else 1]
is_even_distance = not is_even_distance
else:
degree_per_pixel = np.sqrt(proj_plane_pixel_area(new_wcs))
new_coordlist.append(coordinate / degree_per_pixel)
elif coordinate_type == Angle:
new_angle = _estimate_angle(coordinate,
shape.coord_format,
header)
new_coordlist.append(new_angle)
else:
new_coordlist.append(coordinate)
return new_coordlist
QuotedString("{", endQuoteChar="}"),
paren + ZeroOrMore(paren),
Word(nums + " "),
Word(nums + ".")
])
expr = lhs + Optional(Literal("=").suppress() + rhs)
expr.setParseAction(lambda s, l, tok: tuple(tok))
return ZeroOrMore(expr)
ds9_shape_in_comment_defs = dict(
text=wcs_shape(CoordOdd, CoordEven),
vector=wcs_shape(CoordOdd, CoordEven,
Distance, Angle),
composite=wcs_shape(CoordOdd, CoordEven, Angle),
ruler=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven),
compass=wcs_shape(CoordOdd, CoordEven, Distance),
projection=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven, Distance),
segment=wcs_shape(CoordOdd, CoordEven,
repeat=(0, 2))
)
class Ds9AttrParser(object):
def set_continued(self, s, l, tok):
self.continued = True
def __init__(self):
self.continued = False
ds9_attr_parser = get_ds9_attr_parser()