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'

What to do when a structure has no (correct) calculator attached.

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.

max_energy: float = inf
min_energy: float = -inf
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 force magnitude.

max_force: float = inf
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.

maximum_volume_per_atom: float