Source code for pygeoinf.auxiliary

from .gaussian_measure import GaussianMeasure

[docs] def empirical_data_error_measure(model_measure, forward_operator, n_samples=10, scale_factor=1.0): """ Generate an empirical data error measure based on samples from a measure on the model space. Useful for when you need to define a reasonable data error measure for synthetic testing, and need the covariance matrix to be easily accessible. Args: model_measure: The measure on the model space used as a basis for the error measure (e.g., the model prior measure) forward_operator: Linear operator mapping from model space to data space (e.g., operator B) n_samples: Number of samples to generate for computing statistics (default: 10) scale_factor: Scaling factor for the standard deviations (default: 1.0) Returns: inf.GaussianMeasure: Data error measure with empirically determined covariance """ # Generate samples in data space by pushing forward model samples data_samples = model_measure.affine_mapping(operator=forward_operator).samples(n_samples) data_space = forward_operator.codomain # Remove the mean from each sample total = data_space.zero for sample in data_samples: total = data_space.add(total, sample) mean = data_space.multiply(1.0 / n_samples, total) zeroed_samples = [data_space.multiply(scale_factor, data_space.subtract(data_sample, mean)) for data_sample in data_samples] # Create and return the Gaussian measure from the zeroed samples return GaussianMeasure.from_samples(forward_operator.codomain, zeroed_samples)