Defines classes which represent bonds.

class Bond(atom1, atom2, order, periodicity=(0, 0, 0), **kwargs)

Bases: object

Represents an atomic bond.

atom1

The first atom in the bond.

Type

Atom

atom2

The second atom in the bond.

Type

Atom

order

The bond order.

Type

int

periodicity

The directions across which the bond is periodic. For example, (1, 0, -1) means that when going from atom1 to atom2 the bond is periodic across the x axis in the positive direction, is not periodic across the y axis and is periodic across the z axis in the negative direction.

Type

tuple of int

Examples

Adding additional attributes.

Each bond can be given additional attributes. For example

import stk

bond1 = stk.Bond(stk.H(0), stk.H(1), 1)
bond1.attr1 = 12.2
bond1.attr2 = 'something'

A Bond can also initialized with additional attributes directly

bond2 = stk.Bond(
    atom1=stk.C(2),
    atom2=stk.C(3),
    order=1,
    attr1=123,
    attr2='hi'
)

bond2.attr1  # Holds 123.
bond2.attr2  # Holds 'hi'.

Printing

To print a brief summary of a bond you can run

# Prints Bond(C(2), C(3), 1).
print(bond2)

To print a complete description of a bond, including additional attributes, you can run

# Prints Bond(C(2), C(3), 1, attr1=123, attr2='hi')
print(repr(bond2))

If the atoms have additional attributes, they will be printed too

# Add a custom attribute to an atom.
bond2.atom1.alpha = 1

# Prints Bond(C(2, alpha=1), C(3), 1, attr1=123, attr2='hi')
print(repr(bond2))

If private attributes were added to a bond, they will not be printed

bond2._attr3 = 'private'
# Prints Bond(C(2, alpha=1), C(3), 1, attr1=123, attr2='hi')
print(repr(bond2))

Methods

clone(self[, atom_map])

Return a clone.

is_periodic(self)

Return True if the bond is periodic.

__init__(self, atom1, atom2, order, periodicity=(0, 0, 0), **kwargs)

Initialize a Bond.

atom1

The first atom in the bond.

Type

Atom

atom2

The second atom in the bond.

Type

Atom

order

The bond order.

Type

int

periodicity

The directions across which the bond is periodic. For example, (1, 0, -1) means that when going from atom1 to atom2 the bond is periodic across the x axis in the positive direction, is not periodic across the y axis and is periodic across the z axis in the negative direction.

Type

tuple of int, optional

**kwargs

Additional attributes to be added to the bond.

Type

object, optional

clone(self, atom_map=None)

Return a clone.

Private attributes are not passed to the clone.

Parameters

atom_map (dict, optional) – If the clone should hold different Atom instances, then a dict should be provided, which maps atoms in the current Bond to the atoms which should be used in the clone. Only atoms which need to be remapped need to be present in the atom_map.

Returns

The clone.

Return type

Bond

Examples

import stk

c0 = stk.C(0)
c1 = stk.C(1)
bond = stk.Bond(c0, c1, 1, custom_attr=12, _private_attr=1)

# bond_clone holds c0 and c1 in its atom1 and atom2
# attributes, respectively. It also has a custom_attr
# with a value of 12 but it does not have a _private_attr
# attribute.
bond_clone = bond.clone()

It is possible to make sure that the clone holds different atoms

li2 = stk.Li(2)
n3 = stk.N(3)

# clone2 is also a clone, except that it holds
# li2 in the atom2 attribute. Its atom1 attribute still
# holds c0.
clone2 = bond.clone(atom_map={
    c1: li2
})

# clone3 is also a clone, except that it holds n3 and
# li2 in its atom1 and atom2 attributes, respectively.
clone3 = bond.clone(atom_map={
    c0: n3,
    c1: li2
})
is_periodic(self)

Return True if the bond is periodic.

Returns

True if the bond is periodic.

Return type

bool