49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from abc import ABC, abstractmethod
|
|
import astropy.units as u
|
|
import numpy as np
|
|
from typing import Union
|
|
|
|
|
|
class IPSF(ABC):
|
|
"""
|
|
Interface for modelling a PSF
|
|
"""
|
|
@abstractmethod
|
|
def calcReducedObservationAngle(self, contained_energy: Union[str, int, float, u.Quantity],
|
|
jitter_sigma: u.Quantity = None, obstruction: float = 0.0) -> u.Quantity:
|
|
"""
|
|
Calculate the reduced observation angle in lambda / d_ap for the given contained energy.
|
|
|
|
Parameters
|
|
----------
|
|
contained_energy : Union[str, int, float, u.Quantity]
|
|
The percentage of energy to be contained within a circle with the diameter reduced observation angle.
|
|
jitter_sigma : Quantity
|
|
Sigma of the telescope's jitter in arcsec
|
|
obstruction : float
|
|
The central obstruction as ratio A_ob / A_ap
|
|
|
|
Returns
|
|
-------
|
|
reduced_observation_angle: Quantity
|
|
The reduced observation angle in lambda / d_ap
|
|
"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def mapToGrid(self, grid: np.ndarray) -> np.ndarray:
|
|
"""
|
|
Map the integrated PSF values to a sensor grid.
|
|
|
|
Parameters
|
|
----------
|
|
grid : ndarray
|
|
The grid to map the values to. The values will only be mapped onto entries with the value 1.
|
|
|
|
Returns
|
|
-------
|
|
grid : ndarray
|
|
The grid with the mapped values.
|
|
"""
|
|
pass
|