Source code for lenstronomy.LightModel.Profiles.lineprofile

import numpy as np

__all__ = ["LineProfile"]


[docs] class LineProfile(object): """Horizontal line segment class. The line extends `length` arcseconds from (`start_x`, `start_y`) at an angle `angle` degrees to the horizontal. Line `width` is centered in the perpendicular direction, e.g. a profile with 1 arcsecond width and `angle=0` will span -0.5 to 0.5 in the y-direction. Surface brightness is constant and given by `amp`. """ param_names = ["amp", "angle", "length", "width", "start_x", "start_y"] lower_limit_default = { "amp": 0, "angle": -180, "length": 0.01, "width": 0.01, "start_x": -100, "start_y": -100, } upper_limit_default = { "amp": 10, "angle": 180, "length": 10, "width": 5, "start_x": 100, "start_y": 100, }
[docs] def __init__(self): pass
[docs] def function(self, x, y, amp, angle, length, width, start_x=0, start_y=0): """Surface brightness per angular unit. :param x: x-coordinate on sky :param y: y-coordinate on sky :param amp: constant surface brightness of line :param angle: angle of line to the horizontal (degrees) :param length: length of line (arcseconds) :param width: width of line (arcseconds), line width extends symmetrically :param start_x: ra coordinate of start of line :param start_y: dec-coordinate of start of line :return: surface brightness, raise as definition is not defined """ ang = -np.deg2rad(angle) x_ = np.cos(ang) * (x - start_x) + np.sin(ang) * (y - start_y) y_ = np.cos(ang) * (y - start_y) - np.sin(ang) * (x - start_x) flux = np.zeros_like(x_) flux[(x_ >= 0) * (x_ <= length) * (abs(y_) <= width / 2)] = amp return flux
[docs] def total_flux(self, amp, angle, length, width, start_x=0, start_y=0): """Integrated flux of the profile. :param amp: constant surface brightness of line :param angle: angle of line to the horizontal (degrees) :param length: length of line (arcseconds) :param width: width of line (arcseconds), line width extends symmetrically :param start_x: ra coordinate of start of line :param start_y: dec-coordinate of start of line :return: total flux """ return amp * length * width