def test_non_circular_regions(region, nreg): pointing = SkyCoord(0.0, 0.0, unit="deg") finder = ReflectedRegionsFinder(center=pointing, region=region, min_distance_input="0 deg") finder.run() regions = finder.reflected_regions assert len(regions) == nreg
def test_find_reflected_regions(exclusion_mask, on_region, pointing_pos, nreg1, reg3_ra, nreg2, nreg3): pointing = pointing_pos finder = ReflectedRegionsFinder(min_distance_input="0 deg", ) regions, _ = finder.run( center=pointing, region=on_region, exclusion_mask=exclusion_mask, ) assert len(regions) == nreg1 assert_quantity_allclose(regions[3].center.icrs.ra, reg3_ra, rtol=1e-2) # Test without exclusion regions, _ = finder.run(center=pointing, region=on_region) assert len(regions) == nreg2 # Test with too small exclusion small_mask = exclusion_mask.cutout(pointing, Angle("0.1 deg")) regions, _ = finder.run( center=pointing, region=on_region, exclusion_mask=small_mask, ) assert len(regions) == nreg3 # Test with maximum number of regions finder.max_region_number = 5 regions, _ = finder.run( center=pointing, region=on_region, exclusion_mask=small_mask, ) assert len(regions) == 5 # Test with an other type of region on_ellipse_annulus = EllipseAnnulusSkyRegion( center=on_region.center.galactic, inner_width=0.1 * u.deg, outer_width=0.2 * u.deg, inner_height=0.3 * u.deg, outer_height=0.6 * u.deg, angle=130 * u.deg, ) regions, _ = finder.run( region=on_ellipse_annulus, center=pointing, exclusion_mask=small_mask, ) assert len(regions) == 5
def test_bad_on_region(exclusion_mask, on_region): pointing = SkyCoord(83.63, 22.01, unit="deg", frame="icrs") finder = ReflectedRegionsFinder( center=pointing, region=on_region, exclusion_mask=exclusion_mask, min_distance_input="0 deg", ) finder.run() regions = finder.reflected_regions assert len(regions) == 0 # try plotting with mpl_plot_check(): finder.plot()
def test_bad_on_region(exclusion_mask, on_region): pointing = SkyCoord(83.63, 22.01, unit="deg", frame="icrs") finder = ReflectedRegionsFinder(min_distance_input="0 deg", ) regions, _ = finder.run( center=pointing, region=on_region, exclusion_mask=exclusion_mask, ) assert len(regions) == 0
data = (Angle("23 deg") < coords.dec) & (coords.dec < Angle("24 deg")) exclusion_mask.data = ~data pos = SkyCoord(83.633, 22.014, unit="deg") radius = Angle(0.3, "deg") on_region = CircleSkyRegion(pos, radius) center = SkyCoord(83.633, 24, unit="deg") # One can impose a minimal distance between ON region and first reflected regions finder = ReflectedRegionsFinder( region=on_region, center=center, exclusion_mask=exclusion_mask, min_distance_input="0.2 rad", ) regions = finder.run() fig, axes = plt.subplots( ncols=3, subplot_kw={"projection": exclusion_mask.geom.wcs}, figsize=(12, 3), ) def plot_regions(ax, regions, on_region, exclusion_mask): """Little helper function to plot off regions""" exclusion_mask.plot_mask(ax=ax, colors="gray") on_region.to_pixel(ax.wcs).plot(ax=ax, edgecolor="tab:orange") geom = RegionGeom.from_regions(regions) geom.plot_region(ax=ax, color="tab:blue")
mask = (Angle("23 deg") < coords.dec) & (coords.dec < Angle("24 deg")) exclusion_mask.data = np.invert(mask) pos = SkyCoord(83.633, 22.014, unit="deg") radius = Angle(0.3, "deg") on_region = CircleSkyRegion(pos, radius) center = SkyCoord(83.633, 24, unit="deg") # One can impose a minimal distance between ON region and first reflected regions finder = ReflectedRegionsFinder( region=on_region, center=center, exclusion_mask=exclusion_mask, min_distance_input="0.2 rad", ) finder.run() fig1 = plt.figure(1) finder.plot(fig=fig1) # One can impose a minimal distance between two adjacent regions finder = ReflectedRegionsFinder( region=on_region, center=center, exclusion_mask=exclusion_mask, min_distance_input="0.2 rad", min_distance="0.1 rad", ) finder.run() fig2 = plt.figure(2) finder.plot(fig=fig2)