text: from .emission import EmissionModel
  from taurex.constants import PI
  
  
  class DirectImageModel(EmissionModel):
      """
      A forward model for direct imaging of exo-planets
  
      Parameters
      ----------
  
      planet: :class:`~taurex.data.planet.Planet`, optional
          Planet model, default planet is Jupiter
  
      star: :class:`~taurex.data.stellar.star.Star`, optional
          Star model, default star is Sun-like
  
      pressure_profile: :class:`~taurex.data.profiles.pressure.pressureprofile.PressureProfile`, optional
          Pressure model, alternative is to set ``nlayers``, ``atm_min_pressure``
          and ``atm_max_pressure``
  
      temperature_profile: :class:`~taurex.data.profiles.temperature.tprofile.TemperatureProfile`, optional
          Temperature model, default is an :class:`~taurex.data.profiles.temperature.isothermal.Isothermal`
          profile at 1500 K
  
      chemistry: :class:`~taurex.data.profiles.chemistry.chemistry.Chemistry`, optional
          Chemistry model, default is
          :class:`~taurex.data.profiles.chemistry.taurexchemistry.TaurexChemistry` with
          ``H2O`` and ``CH4``
  
      nlayers: int, optional
          Number of layers. Used if ``pressure_profile`` is not defined.
  
      atm_min_pressure: float, optional
          Pressure at TOA. Used if ``pressure_profile`` is not defined.
  
      atm_max_pressure: float, optional
          Pressure at BOA. Used if ``pressure_profile`` is not defined.
  
      ngauss: int, optional
          Number of gaussian quadrature points, default = 4
  
      """
  
      def __init__(self,
                   planet=None,
                   star=None,
                   pressure_profile=None,
                   temperature_profile=None,
                   chemistry=None,
                   nlayers=100,
                   atm_min_pressure=1e-4,
                   atm_max_pressure=1e6,
                   ngauss=4,
                   ):
          super().__init__(planet,
                           star,
                           pressure_profile,
                           temperature_profile,
                           chemistry,
                           nlayers,
                           atm_min_pressure,
                           atm_max_pressure,
                           ngauss=ngauss)
  
      def compute_final_flux(self, f_total):
          star_distance_meters = self._star.distance*3.08567758e16
  
          SDR = pow((star_distance_meters/3.08567758e16), 2)
          SDR = 1.0
          planet_radius = self._planet.fullRadius
  
          return((f_total * (planet_radius**2) * 2.0 * PI) /
                 (4 * PI * (star_distance_meters**2))) * SDR
  
  
      @classmethod
      def input_keywords(self):
          return ['direct', 'directimage' ]