astrophot.models.func package#

Submodules#

astrophot.models.func.base module#

astrophot.models.func.base.all_subclasses(cls)[source]#
astrophot.models.func.base.downsample(img: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], scale: int = 1)[source]#
astrophot.models.func.base.downsample_mean(img: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], scale: int = 1)[source]#

astrophot.models.func.convolution module#

astrophot.models.func.convolution.convolve(image: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], psf: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.convolution.curvature_kernel(dtype, device)[source]#

astrophot.models.func.exponential module#

astrophot.models.func.exponential.exponential(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Re: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ie: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Exponential 1d profile function, specifically designed for pytorch operations.

Args: - R: Radius tensor at which to evaluate the exponential function - Re: Effective radius in the same units as R - Ie: Effective surface density

astrophot.models.func.ferrer module#

astrophot.models.func.ferrer.ferrer(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], rout: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Modified Ferrer profile.

Args: - R: Radius tensor at which to evaluate the modified Ferrer function - rout: Outer radius of the profile - alpha: Power-law index - beta: Exponent for the modified Ferrer function - I0: Central intensity

astrophot.models.func.gaussian module#

astrophot.models.func.gaussian.gaussian(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], sigma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], flux: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Gaussian 2d profile function.

Args: - R: Radii array at which to evaluate the gaussian function - sigma: Standard deviation of the gaussian in the same units as R - flux: Total flux of the Gaussian

astrophot.models.func.gaussian_ellipsoid module#

astrophot.models.func.gaussian_ellipsoid.euler_rotation_matrix(alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], gamma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Compute the rotation matrix from Euler angles.

See the Z_alpha X_beta Z_gamma convention for the order of rotations here: https://en.wikipedia.org/wiki/Euler_angles

astrophot.models.func.integration module#

astrophot.models.func.integration.bright_integrate(z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij: callable, bright_frac: float, scale: float = 1.0, quad_order: int = 3, gridding: int = 5, max_depth: int = 2)[source]#
astrophot.models.func.integration.pixel_center_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.integration.pixel_quad_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], w: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'] = None, order: int = 3) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Integrate the pixel values using quadrature weights.

Args: - Z: The tensor containing pixel values. - w: The quadrature weights. - order: The order of the quadrature.

astrophot.models.func.integration.pixel_simpsons_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.integration.recursive_quad_integrate(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij: callable, curve_frac: float, scale: float = 1.0, quad_order: int = 3, gridding: int = 5, _current_depth: int = 0, max_depth: int = 1) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.integration.single_quad_integrate(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij, scale: float, quad_order: int = 3) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#
astrophot.models.func.integration.upsample(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], order: int, scale: float) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#

astrophot.models.func.king module#

astrophot.models.func.king.king(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rc: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rt: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Empirical King profile.

Args: - R: Radial distance from the center of the profile. - Rc: Core radius of the profile. - Rt: Truncation radius of the profile. - alpha: Power-law index of the profile. - I0: Central intensity of the profile.

astrophot.models.func.moffat module#

astrophot.models.func.moffat.moffat(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], n: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rd: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Moffat 1d profile function

Args: - R: Radii tensor at which to evaluate the moffat function - n: concentration index - Rd: scale length in the same units as R - I0: central surface density

astrophot.models.func.nuker module#

astrophot.models.func.nuker.nuker(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rb: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ib: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], gamma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Nuker 1d profile function

Args: - R: Radii tensor at which to evaluate the nuker function - Ib: brightness at the scale length, represented as the log of the brightness divided by pixel scale squared. - Rb: scale length radius - alpha: sharpness of transition between power law slopes - beta: outer power law slope - gamma: inner power law slope

astrophot.models.func.sersic module#

astrophot.models.func.sersic.sersic(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], n: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Re: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ie: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Seric 1d profile function, specifically designed for pytorch operations

Args: - R: Radii tensor at which to evaluate the sersic function - n: sersic index restricted to n > 0.36 - Re: Effective radius in the same units as R - Ie: Effective surface density

astrophot.models.func.sersic.sersic_n_to_b(n: float) float[source]#

Compute the b(n) for a sersic model. This factor ensures that the $R_e$ and $I_e$ parameters do in fact correspond to the half light values and not some other scale radius/intensity.

astrophot.models.func.spline module#

astrophot.models.func.spline.cubic_spline_torch(x: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], y: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], xs: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Compute the 1D cubic spline interpolation for the given data points using PyTorch.

Args: - x (Tensor): A 1D tensor representing the x-coordinates of the known data points. - y (Tensor): A 1D tensor representing the y-coordinates of the known data points. - xs (Tensor): A 1D tensor representing the x-coordinates of the positions where

the cubic spline function should be evaluated.

astrophot.models.func.spline.spline(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], profR: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], profI: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], extend: str = 'zeros') Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Spline 1d profile function, cubic spline between points up to second last point beyond which is linear

Args: - R: Radii tensor at which to evaluate the spline function - profR: radius values for the surface density profile in the same units as R - profI: surface density values for the surface density profile - extend: How to extend the spline beyond the last point. Options are ‘zeros’ or ‘const’.

astrophot.models.func.transform module#

astrophot.models.func.transform.rotate(theta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], x: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], y: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#

Applies a rotation matrix to the X,Y coordinates

astrophot.models.func.zernike module#

astrophot.models.func.zernike.coefficients(n: int, m: int) list[tuple[int, float]][source]#
astrophot.models.func.zernike.zernike_basis(order: int, N: int) ndarray[source]#
astrophot.models.func.zernike.zernike_n_m_list(n: int) list[tuple[int, int]][source]#
astrophot.models.func.zernike.zernike_n_m_modes(rho: ndarray, phi: ndarray, n: int, m: int) ndarray[source]#

Module contents#

astrophot.models.func.all_subclasses(cls)[source]#
astrophot.models.func.bright_integrate(z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij: callable, bright_frac: float, scale: float = 1.0, quad_order: int = 3, gridding: int = 5, max_depth: int = 2)[source]#
astrophot.models.func.convolve(image: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], psf: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.curvature_kernel(dtype, device)[source]#
astrophot.models.func.downsample(img: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], scale: int = 1)[source]#
astrophot.models.func.downsample_mean(img: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], scale: int = 1)[source]#
astrophot.models.func.euler_rotation_matrix(alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], gamma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Compute the rotation matrix from Euler angles.

See the Z_alpha X_beta Z_gamma convention for the order of rotations here: https://en.wikipedia.org/wiki/Euler_angles

astrophot.models.func.exponential(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Re: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ie: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Exponential 1d profile function, specifically designed for pytorch operations.

Args: - R: Radius tensor at which to evaluate the exponential function - Re: Effective radius in the same units as R - Ie: Effective surface density

astrophot.models.func.ferrer(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], rout: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Modified Ferrer profile.

Args: - R: Radius tensor at which to evaluate the modified Ferrer function - rout: Outer radius of the profile - alpha: Power-law index - beta: Exponent for the modified Ferrer function - I0: Central intensity

astrophot.models.func.gaussian(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], sigma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], flux: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Gaussian 2d profile function.

Args: - R: Radii array at which to evaluate the gaussian function - sigma: Standard deviation of the gaussian in the same units as R - flux: Total flux of the Gaussian

astrophot.models.func.king(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rc: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rt: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Empirical King profile.

Args: - R: Radial distance from the center of the profile. - Rc: Core radius of the profile. - Rt: Truncation radius of the profile. - alpha: Power-law index of the profile. - I0: Central intensity of the profile.

astrophot.models.func.moffat(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], n: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rd: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], I0: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Moffat 1d profile function

Args: - R: Radii tensor at which to evaluate the moffat function - n: concentration index - Rd: scale length in the same units as R - I0: central surface density

astrophot.models.func.nuker(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Rb: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ib: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], alpha: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], beta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], gamma: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Nuker 1d profile function

Args: - R: Radii tensor at which to evaluate the nuker function - Ib: brightness at the scale length, represented as the log of the brightness divided by pixel scale squared. - Rb: scale length radius - alpha: sharpness of transition between power law slopes - beta: outer power law slope - gamma: inner power law slope

astrophot.models.func.pixel_center_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.pixel_quad_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], w: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'] = None, order: int = 3) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Integrate the pixel values using quadrature weights.

Args: - Z: The tensor containing pixel values. - w: The quadrature weights. - order: The order of the quadrature.

astrophot.models.func.pixel_simpsons_integrator(Z: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.quad_table(order, dtype, device)[source]#

Generate a meshgrid for quadrature points using Legendre-Gauss quadrature.

Parameters#

nint

The number of quadrature points in each dimension.

dtypetorch.dtype

The desired data type of the tensor.

devicetorch.device

The device on which to create the tensor.

Returns#

Tuple[torch.Tensor, torch.Tensor, torch.Tensor]

The generated meshgrid as a tuple of Tensors.

astrophot.models.func.recursive_quad_integrate(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij: callable, curve_frac: float, scale: float = 1.0, quad_order: int = 3, gridding: int = 5, _current_depth: int = 0, max_depth: int = 1) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#
astrophot.models.func.rotate(theta: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], x: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], y: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#

Applies a rotation matrix to the X,Y coordinates

astrophot.models.func.sersic(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], n: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Re: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Ie: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']) Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Seric 1d profile function, specifically designed for pytorch operations

Args: - R: Radii tensor at which to evaluate the sersic function - n: sersic index restricted to n > 0.36 - Re: Effective radius in the same units as R - Ie: Effective surface density

astrophot.models.func.sersic_n_to_b(n: float) float[source]#

Compute the b(n) for a sersic model. This factor ensures that the $R_e$ and $I_e$ parameters do in fact correspond to the half light values and not some other scale radius/intensity.

astrophot.models.func.single_quad_integrate(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], brightness_ij, scale: float, quad_order: int = 3) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#
astrophot.models.func.spline(R: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], profR: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], profI: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], extend: str = 'zeros') Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'][source]#

Spline 1d profile function, cubic spline between points up to second last point beyond which is linear

Args: - R: Radii tensor at which to evaluate the spline function - profR: radius values for the surface density profile in the same units as R - profI: surface density values for the surface density profile - extend: How to extend the spline beyond the last point. Options are ‘zeros’ or ‘const’.

astrophot.models.func.upsample(i: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], j: Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], order: int, scale: float) Tuple[Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.'], Annotated[Tensor, 'One of: torch.Tensor or jax.numpy.ndarray depending on the chosen backend.']][source]#
astrophot.models.func.zernike_basis(order: int, N: int) ndarray[source]#
astrophot.models.func.zernike_n_m_list(n: int) list[tuple[int, int]][source]#
astrophot.models.func.zernike_n_m_modes(rho: ndarray, phi: ndarray, n: int, m: int) ndarray[source]#