Source code for xlens.simulator.bat

"""Utilities for applying BATSim transforms."""
import galsim
import numpy as np

try:  # pragma: no cover - optional dependency
    import batsim
except ImportError:  # pragma: no cover - optional dependency
    batsim = None


[docs] def draw_ia( amplitude, beta, phi, clip_radius, stamp_size, gal_obj: galsim.GSObject, psf_obj: galsim.GSObject, image_pos: galsim.PositionD, draw_method: str, pixel_scale: float, entry, ) -> galsim.Image: """Draw a postage stamp using the BATSim intrinsic alignment transform. Parameters ---------- amplitude : float IA amplitude parameter ``A`` passed to ``batsim.IaTransform``. beta : float IA beta parameter. phi : float IA orientation angle (radians). clip_radius : float Clip radius in units of half-light radii. stamp_size : int Side length (pixels) of the output stamp. gal_obj : galsim.GSObject Galaxy profile before PSF convolution. psf_obj : galsim.GSObject PSF profile. image_pos : galsim.PositionD Absolute pixel position of the galaxy on the coadd. draw_method : str GalSim draw method (e.g. ``"auto"``, ``"no_pixel"``). pixel_scale : float Pixel scale in arcseconds. entry : numpy structured scalar Galaxy catalog row; must contain ``"hlr"`` field. Returns ------- galsim.Image Rendered postage stamp with bounds set on the coadd grid. """ if batsim is None: raise ImportError("Cannot import batsim") hlr = float(entry["hlr"]) transform_obj = batsim.IaTransform( scale=pixel_scale, hlr=hlr, A=amplitude, beta=beta, phi=phi, clip_radius=clip_radius, ) x_d = image_pos.x y_d = image_pos.y x_i = np.round(x_d).astype(int) y_i = np.round(y_d).astype(int) gal_img = batsim.simulate_galaxy( ngrid=stamp_size, pix_scale=pixel_scale, gal_obj=gal_obj, transform_obj=transform_obj, psf_obj=psf_obj, draw_method=draw_method, delta_image_x=(x_d - x_i), delta_image_y=(y_d - y_i), ) stamp = galsim.ImageF(gal_img, scale=pixel_scale) stamp.setCenter(x_i, y_i) return stamp
def draw_flexion( stamp_size, gal_obj: galsim.GSObject, psf_obj: galsim.GSObject, image_pos: galsim.PositionD, draw_method: str, pixel_scale: float, entry, ) -> galsim.Image: """Draw a postage stamp using the BATSim flexion transform. .. note:: Not yet implemented. """ pass __all__ = ["draw_ia"]