nirs4all.data.synthetic.reconstruction.distributions module
Parameter distribution fitting and sampling for variance modeling.
Learns distributions of physical parameters from inverted samples, then samples from these distributions for synthetic generation.
- class nirs4all.data.synthetic.reconstruction.distributions.DistributionResult(param_names: ~typing.List[str], distributions: ~typing.Dict[str, ~typing.Dict[str, ~typing.Any]], correlations: ~numpy.ndarray | None = None, factor_loadings: ~numpy.ndarray | None = None, transform_params: ~typing.Dict[str, ~typing.Dict[str, ~typing.Any]] = <factory>, n_samples_fitted: int = 0)[source]
Bases:
objectResult of parameter distribution fitting.
- correlations
Correlation matrix of transformed parameters.
- Type:
numpy.ndarray | None
- factor_loadings
Low-rank factor model loadings (optional).
- Type:
numpy.ndarray | None
- class nirs4all.data.synthetic.reconstruction.distributions.ParameterDistributionFitter(positive_params: List[str] = <factory>, bounded_params: Dict[str, ~typing.Tuple[float, float]]=<factory>, use_factor_model: bool = False, n_factors: int = 3, min_std: float = 1e-06)[source]
Bases:
objectFit distributions to parameter samples.
- For positive parameters (concentrations, path_length):
Use log-normal or gamma distributions
Transform to log space for correlation modeling
- For shift parameters (wl_shift):
Use Gaussian distributions
- For bounded parameters:
Use truncated normal or beta distributions
- fit(params: Dict[str, ndarray], param_names: List[str] | None = None) DistributionResult[source]
Fit distributions to parameter samples.
- Parameters:
params – Dict of parameter arrays. Each array has shape (n_samples,) or (n_samples, n_features) for multi-dimensional params.
param_names – Optional list of parameter names to fit.
- Returns:
DistributionResult with fitted distributions.
- class nirs4all.data.synthetic.reconstruction.distributions.ParameterSampler(distribution_result: DistributionResult, use_correlations: bool = True)[source]
Bases:
objectSample parameters from fitted distributions.
Uses Gaussian copula to maintain correlations between parameters while respecting marginal distributions.
- distribution_result
Fitted DistributionResult.
- distribution_result: DistributionResult
- sample(n_samples: int, random_state: int | None = None) Dict[str, ndarray][source]
Sample parameters from fitted distributions.
- Parameters:
n_samples – Number of samples to generate.
random_state – Random seed.
- Returns:
Dict of parameter arrays with same structure as fit input.
- nirs4all.data.synthetic.reconstruction.distributions.fit_parameter_distributions(inversion_results: List['InversionResult'], component_names: List[str] | None = None, include_environmental: bool = False) Tuple[DistributionResult, ParameterSampler][source]
Fit distributions from inversion results.
- Parameters:
inversion_results – List of InversionResult from batch inversion.
component_names – Optional component names for concentrations.
include_environmental – Whether to include environmental parameter distributions.
- Returns:
Tuple of (DistributionResult, ParameterSampler).