refmod.hapke#

Submodules#

Package Contents#

refmod.hapke.amsa(single_scattering_albedo, incidence_direction, emission_direction, surface_orientation, phase_function_type='dhg', b_n=None, a_n=None, roughness=0, shadow_hiding_h=0.0, shadow_hiding_b0=0.0, coherant_backscattering_h=0.0, coherant_backscattering_b0=0.0, phase_function_args=(), refl_optimization=None, h_level=2)#

Calculates the reflectance using the AMSA model.

Parameters:
  • single_scattering_albedo (npt.NDArray) – Single scattering albedo.

  • incidence_direction (npt.NDArray) – Incidence direction vector(s) of shape (…, 3).

  • emission_direction (npt.NDArray) – Emission direction vector(s) of shape (…, 3).

  • surface_orientation (npt.NDArray) – Surface orientation vector(s) of shape (…, 3).

  • phase_function_type (PhaseFunctionType) – Type of phase function to use.

  • b_n (npt.NDArray) – Coefficients of the Legendre expansion.

  • a_n (npt.NDArray) – Coefficients of the Legendre expansion.

  • roughness (float, optional) – Surface roughness, by default 0.

  • shadow_hiding_h (float, optional) – Shadowing parameter, by default 0.

  • shadow_hiding_b0 (float, optional) – Shadowing parameter, by default 0.

  • coherant_backscattering_h (float, optional) – Coherent backscattering parameter, by default 0.

  • coherant_backscattering_b0 (float, optional) – Coherent backscattering parameter, by default 0.

  • phase_function_args (tuple, optional) – Additional arguments for the phase function, by default ().

  • refl_optimization (npt.NDArray | None, optional) – Reflectance optimization array, by default None.

Returns:

Reflectance values.

Return type:

npt.NDArray

Raises:
  • Exception – If at least one reflectance value is not real.

  • References

  • ----------

  • [AMSAModelPlaceholder]

refmod.hapke.imsa(single_scattering_albedo, incidence_direction, emission_direction, surface_orientation, phase_function_type='dhg', roughness=0.0, opposition_effect_h=0.0, opposition_effect_b0=0.0, phase_function_args=(), h_level=2)#

Calculates reflectance using the IMSA model.

IMSA stands for Inversion of Multiple Scattering and Absorption.

Parameters:
  • single_scattering_albedo (npt.NDArray) – Single scattering albedo, shape (…).

  • incidence_direction (npt.NDArray) – Incidence direction vector(s), shape (…, 3).

  • emission_direction (npt.NDArray) – Emission direction vector(s), shape (…, 3).

  • surface_orientation (npt.NDArray) – Surface normal vector(s), shape (…, 3).

  • phase_function (Callable[[npt.NDArray], npt.NDArray]) – Callable that accepts cos_alpha (cosine of phase angle) and returns phase function values.

  • roughness (float, optional) – Surface roughness parameter, by default 0.

  • opposition_effect_h (float, optional) – Opposition effect parameter h, by default 0.

  • oppoistion_effect_b0 (float, optional) – Opposition effect parameter B0 (b_zero), by default 0. Note: Original argument name oppoistion_effect_b0 kept for API compatibility.

Returns:

Calculated reflectance values, shape (…).

Return type:

npt.NDArray

Raises:

Exception – If any calculated reflectance value has a significant imaginary part.

Notes

  • Input arrays incidence_direction, emission_direction, surface_orientation, and single_scattering_albedo are expected to broadcast together.

  • The phase_function should be vectorized to handle arrays of cos_alpha.

  • The IMSA model accounts for multiple scattering and absorption.

class refmod.hapke.Hapke(/, **data)#
!!! abstract “Usage Documentation”

[Models](../concepts/models.md)

A base class for creating Pydantic models.

__class_vars__#

The names of the class variables defined on the model.

__private_attributes__#

Metadata about the private attributes of the model.

__signature__#

The synthesized __init__ [Signature][inspect.Signature] of the model.

__pydantic_complete__#

Whether model building is completed, or if there are still undefined fields.

__pydantic_core_schema__#

The core schema of the model.

__pydantic_custom_init__#

Whether the model has a custom __init__ function.

__pydantic_decorators__#

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_generic_metadata__#

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

__pydantic_parent_namespace__#

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__#

The name of the post-init method for the model, if defined.

__pydantic_root_model__#

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__#

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_validator__#

The pydantic-core SchemaValidator used to validate instances of the model.

__pydantic_fields__#

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.

__pydantic_computed_fields__#

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_extra__#

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to ‘allow’.

__pydantic_fields_set__#

The names of fields explicitly set during instantiation.

__pydantic_private__#

Values of private attributes set on the model instance.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

single_scattering_albedo: numpy.typing.NDArray#
incidence_direction: numpy.typing.NDArray#
emission_direction: numpy.typing.NDArray#
surface_orientation: numpy.typing.NDArray#
phase_function_type: functions.phase.PhaseFunctionType = None#
roughness: float = None#
shadow_hiding_h: float = None#
shadow_hiding_b0: float = None#
coherant_backscattering_h: float = None#
coherant_backscattering_b0: float = None#
phase_function_args: tuple = None#
model: Literal['amsa', 'imsa'] = None#
h_level: Literal[1, 2] = None#
backend: Literal['numpy', 'numba'] = None#
model_config#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

refl()#

Calculate the reflectance using the specified Hapke model.

Returns:

The calculated reflectance.

Return type:

npt.NDArray