sisl.geom.AtomSeq

class sisl.geom.AtomSeq

Bases: AtomIndex

Classify atoms based on their indices using a sequence string.

Parameters:

seq – sequence indicating the indices that you want to match (see examples)

Examples

>>> seq = AtomSeq("1-3")
>>> geom.sub(seq) == geom.sub([1,2,3])
>>> seq = AtomSeq("1-3,7")
>>> geom.sub(seq) == geom.sub([1,2,3,7])
>>> seq = AtomSeq("1-3,7:")
>>> geom.sub(seq) == geom.sub([1,2,3,*range(7, len(geom))])
>>> seq = AtomSeq("1-3,6,9:2:")
>>> geom.sub(seq) == geom.sub([1,2,3,6,*range(9, len(geom), 2)])

See also

strmap, lstranges

Methods

categorize(geometry, *args, **kwargs)

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

categorize(geometry, *args, **kwargs)[source]

Do categorization

Parameters:

geometry (Geometry)

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