Source code for ipsuite.configuration_selection.uniform_temporal

"""Module for selecting atoms uniform in time."""

import typing

import ase
import numpy as np
import zntrack

from ipsuite.configuration_selection import ConfigurationSelection


[docs] class UniformTemporalSelection(ConfigurationSelection): """Select configurations uniformly distributed across time. Parameters ---------- data : list[ase.Atoms] The atomic configurations to select from. n_configurations : int Number of configurations to select uniformly across the trajectory. Attributes ---------- selected_ids : list[int] Indices of selected configurations. frames : list[ase.Atoms] The selected atomic configurations. excluded_frames : list[ase.Atoms] The atomic configurations that were not selected. Examples -------- >>> with project: ... data = ips.AddData(file="ethanol.xyz") # contains 100 frames ... selector = ips.UniformTemporalSelection(data=data.frames, n_configurations=5) >>> project.repro() >>> print(f"Selected {len(selector.selected_ids)} configurations with IDs: " ... f"{selector.selected_ids}") Selected 5 configurations with IDs: [0, 25, 50, 74, 99] """ n_configurations: int = zntrack.params()
[docs] def select_atoms(self, atoms_lst: typing.List[ase.Atoms]) -> typing.List[int]: """Select Atoms uniform in time.""" return ( np.round(np.linspace(0, len(atoms_lst) - 1, self.n_configurations)) .astype(int) .tolist() )