assyst.filters

Classes that filter structures according to some criteria.

The code in the other modules that uses them is set up such that simple functions can always be passed as well and that the classes here are just for convenience.

class assyst.filters.AndFilter(l: Callable[[Atoms], bool] | FilterBase, r: Callable[[Atoms], bool] | FilterBase)[source]

Bases: FilterBase

Conjunction of two filters.

l: Callable[[Atoms], bool] | FilterBase
r: Callable[[Atoms], bool] | FilterBase
class assyst.filters.AspectFilter(maximum_aspect_ratio: float = 6)[source]

Bases: FilterBase

Filters structures with high aspect ratios.

maximum_aspect_ratio: float = 6
class assyst.filters.CalculatorFilter(*, missing: Literal['error', 'ignore'] = 'error')[source]

Bases: FilterBase

Filters that require a single point calculator set on the structure.

missing: Literal['error', 'ignore'] = 'error'

Behaviour when a structure has no SinglePointCalculator attached.

"error" (default): raise ValueError. "ignore": silently pass the structure through (return True).

class assyst.filters.DistanceFilter(radii: dict[str, float])[source]

Bases: FilterBase

Filter structures that contain too close atoms.

Setting a radius to NaN allows all bonds involving this atom.

radii: dict[str, float]
to_tol_matrix(prototype: Literal['metallic', 'atomic', 'molecular', 'vdW'] = 'metallic') Tol_matrix[source]

Returns equivalent tolerance matrix for pyxtal.

Parameters:

prototype (metallic, atomic, molecular or vdW) – passed to Tol_matrix as is and used there to initialize radii of elements not explicitly set in this filter

class assyst.filters.EnergyFilter(min_energy: float = -inf, max_energy: float = inf, *, missing: Literal['error', 'ignore'] = 'error')[source]

Bases: CalculatorFilter

Filters structures by energy per atom (eV/atom).

Keeps structures whose energy per atom falls within [min_energy, max_energy].

max_energy: float = inf

+∞).

Type:

Upper bound on energy per atom in eV/atom (default

min_energy: float = -inf

−∞).

Type:

Lower bound on energy per atom in eV/atom (default

class assyst.filters.FilterBase[source]

Bases: ABC

Base class for filter objects that implements conjunction and disjunction operators.

class assyst.filters.ForceFilter(max_force: float = inf, *, missing: Literal['error', 'ignore'] = 'error')[source]

Bases: CalculatorFilter

Filters structures by maximum atomic force magnitude (eV/Å).

Keeps structures where no atom experiences a force larger than max_force.

max_force: float = inf

+∞).

Type:

Maximum allowed force magnitude in eV/Å (default

class assyst.filters.OrFilter(l: Callable[[Atoms], bool] | FilterBase, r: Callable[[Atoms], bool] | FilterBase)[source]

Bases: FilterBase

Disjunction of two filters.

l: Callable[[Atoms], bool] | FilterBase
r: Callable[[Atoms], bool] | FilterBase
class assyst.filters.VolumeFilter(maximum_volume_per_atom: float)[source]

Bases: FilterBase

Filters structures by volume per atom (ų/atom).

Keeps structures whose volume per atom does not exceed maximum_volume_per_atom.

maximum_volume_per_atom: float

Upper bound on volume per atom in ų/atom.