sisl.geom.AtomXYZ

class sisl.geom.AtomXYZ

Bases: AtomCategory

Classify atoms based on coordinates

Parameters:
  • *args (Shape) – any shape that implements Shape.within

  • **kwargs

    keys are operator specifications and values are used in those specifications. The keys are split into 3 sections <options>_<direction>_<operator>

    • options are made of combinations of ['a', 'f'] i.e. "af", "f" or "a" are all valid. An a takes the absolute value, f means a fractional coordinate. This part is optional.

    • direction is anything that gets parsed in sisl.utils.misc.direction either one of {0, "X", "x", "a", 1, "Y", "y", "b", 2, "Z", "z", "c"}.

    • operator is a name for an operator defined in the operator module.

    For instance a_z_lt=3. will be equivalent to the boolean operation np.fabs(geometry.xyz[:, 2]) < 3..

    Optionally one need not specify the operator in which case one should provide an argument of two values.

    For instance c=(3., 6.) will be equivalent to the boolean operation 3. <= geometry.xyz[:, 2]) <= 6..

x, y, z, fx, fy, fz, ax, ay, az

Shortcuts for creating an AtomXYZ category.

AtomXYZ.x(-2, 3) == AtomXYZ(x=(-2, 3))
AtomXYZ.fx < 3 == AtomXYZ.fx(None, 3) == AtomXYZ(f_x=(None, 3)) == AtomXYZ(f_x_lt=3)
Type:

AtomCategory

Methods

categorize(geometry[, atoms])

Do categorization

is_class(name[, case])

Query whether name matches the class name by removing a prefix kw

kw(**kwargs)

Create categories based on keywords

Attributes

name

Name of category

ax

alias of Atomax

ay

alias of Atomay

az

alias of Atomaz

fx

alias of Atomfx

fy

alias of Atomfy

fz

alias of Atomfz

x

alias of Atomx

y

alias of Atomy

z

alias of Atomz

categorize(geometry, atoms=None)[source]

Do categorization

Parameters:
classmethod is_class(name, case=True)

Query whether name matches the class name by removing a prefix kw

This is important to ensure that users match the full class name by omitting the prefix returned from this method.

This is an abstract method to ensure sub-classes of Category implements it.

For instance:

class MyCategory(Category):

    @classmethod
    def is_class(cls, name):
         # strip "My" and do comparison
         return cl.__name__.lower()[2:] == name.lower()

would enable one to compare against the base category scheme.

This has the option to search case-sensitivity or not.

Return type:

bool

classmethod kw(**kwargs)

Create categories based on keywords

This will search through the inherited classes and return and & category object for all keywords.

Since this is a class method one should use this on the base category class in the given section of the code.

property name

Name of category