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