aenet.geometry.transformations.DOptimalDisplacementTransformation
- class aenet.geometry.transformations.DOptimalDisplacementTransformation(rms: float = 0.1, n_structures: int = 10, max_iter: int = 200, learning_rate: float = 0.1, tol: float = 0.0001, logdet_regularization: float = 1e-06, random_state: int | Generator | None = None, remove_translations: bool = True, enforce_zero_mean: bool = True, verbose: bool = False)[source]
Generate D-optimal (maximally diverse) atomic displacements.
This stochastic transformation generates a fixed number of displaced structures around a reference configuration. The ensemble of displacements is optimized to be maximally diverse by maximizing the log-determinant of the (regularized) covariance matrix of the displacement patterns (D-optimal design criterion).
Purpose
The operation is a set of coordinate perturbations at fixed cell. The D-optimality objective seeks a set of displacement patterns that span the local configuration space as widely as possible for a given number of samples.
- param rms:
Target RMS displacement per atom in Angstroms (default: 0.1).
- type rms:
float, optional
- param n_structures:
Number of displaced structures to generate (>= 2).
- type n_structures:
int, optional
- param max_iter:
Maximum number of L-BFGS-B iterations (default: 200).
- type max_iter:
int, optional
- param learning_rate:
(Kept for backward compatibility with earlier projected-gradient implementations; currently unused by the SciPy optimizer.)
- type learning_rate:
float, optional
- param tol:
Optimizer tolerance (default: 1e-4).
- type tol:
float, optional
- param logdet_regularization:
Regularization parameter epsilon for covariance (default: 1e-6).
- type logdet_regularization:
float, optional
- param random_state:
Random seed or generator for reproducibility.
- type random_state:
int or numpy.random.Generator, optional
- param remove_translations:
If True, remove COM translation per pattern.
- type remove_translations:
bool, optional
- param enforce_zero_mean:
If True, enforce zero mean displacement across ensemble.
- type enforce_zero_mean:
bool, optional
- __init__(rms: float = 0.1, n_structures: int = 10, max_iter: int = 200, learning_rate: float = 0.1, tol: float = 0.0001, logdet_regularization: float = 1e-06, random_state: int | Generator | None = None, remove_translations: bool = True, enforce_zero_mean: bool = True, verbose: bool = False)[source]
Methods
__init__([rms, n_structures, max_iter, ...])apply_transformation(structure, **kwargs)Apply D-optimal displacement transformation to structure.