Source code for crystal_toolkit.components.transformations.rattle

from pymatgen.transformations.advanced_transformations import (
    MonteCarloRattleTransformation,
)

from crystal_toolkit.components.transformations.core import TransformationComponent


[docs]class MonteCarloRattleTransformationComponent(TransformationComponent): @property def title(self): return "Rattle a supercell" @property def description(self): return """Uses a Monte Carlo rattle procedure to randomly perturb the sites in a structure using the [hiPhive](https://hiphive.materialsmodeling.org) code. Rattling atom \\` i \\` is carried out as a Monte Carlo move that is accepted with a probability determined from the minimum interatomic distance \\` d\\_{ij} \\`. If \\` \\\\min(d\\_{ij}) \\` is smaller than \\` d\\_{min} \\` the move is only accepted with a low probability. This process is repeated for each atom a number of times meaning the magnitude of the final displacements is not *directly* connected to the rattle amplitude. """ @property def transformation(self): return MonteCarloRattleTransformation
[docs] def options_layouts(self, state=None, structure=None): state = state or { "rattle_std": 0.2, "min_distance": 0.1, "seed": None, } rattle_std = self.get_numerical_input( label="Rattle amplitude", kwarg_label="rattle_std", state=state, help_str="""Rattle amplitude (standard deviation in normal distribution). Note: this value is not *directly* connected to the final average displacement for the structures""", shape=(), ) min_distance = self.get_numerical_input( label="Minimum distance /Å", kwarg_label="min_distance", state=state, help_str="""Interatomic distance used for computing the probability for each rattle move.""", shape=(), ) seed = self.get_numerical_input( label="Random seed", kwarg_label="seed", state=state, help_str="""Seed for setting up NumPy random state from which random numbers are generated. If not set, a random seed will be generated (default). This option allows the output of this transformation to be deterministic.""", shape=(), is_int=True, ) return [rattle_std, min_distance, seed]