3.7.2。原子

班级 Atom(atnum = 0., 符号=无, Coords = None, 单位='Angstrom', 债券=无, mol = none, **其他)[来源]

一个类代表三维空间中的单个原子。

此类的实例具有以下属性:

  • atnum - 原子序数(“虚拟原子”为零)
  • coords - 长度3存储空间坐标的元组
  • bonds - 债券列表(见 Bond)这种原子是一部分
  • molMolecule this atom belongs to
  • propertiesSettings 存储有关此原子的所有其他信息的实例(最初被填充 **其他)

可以直接或使用以下属性之一访问上述属性:

  • x, y, z – allow to read or modify each coordinate separately

  • 象征 – allows to read or write the atomic symbol directly. Atomic symbol is not stored as an attribute, instead of that the atomic number (atnum) indicates the type of atom. In fact, 象征 this is just a wrapper around atnum that uses PeriodicTable as a translator:

    >>> a = Atom(atnum=8)
    >>> print(a.象征)
    O
    >>> a.象征 = 'Ca'
    >>> print(a.atnum)
    20
    
  • mass - 原子质量,从 PeriodicTable, 只读

  • radius - 原子半径,获得 PeriodicTable, 只读

  • connectors - 从的连接器数量 PeriodicTable, 只读

笔记

When creating a new atom, its type can be chosen either by setting an atomic number or a symbol (atnum象征 constructor arguments). The 象征 argument takes precedence – if it is supplied, the atnum argument is ignored.

Values stored in coords tuple do not necessarily have to be numeric, you can also store any string there. This might come handy for programs that allow parametrization of coordinates in the input file (to enforce some geometry constraints for example):

>>> a = Atom(象征='C', coords=(1,2,3))
>>> print(a)
         C       1.00000       2.00000       3.00000
>>> a.y = 'param1'
>>> print(a)
         C       1.00000        param1       3.00000

但是,非数值坐标不能与一些方法一起使用(例如 distance_to() 或者 translate())。尝试这样做提出了一个例外。

Internally, atomic coordinates are always expressed in angstroms. Most of methods that read or modify atomic coordinates accept a keyword argument 单元 allowing to choose unit in which results and/or arguments are expressed (see Units for details). Throughout the entire code angstrom is the default length unit. If you don’t specify 单元 parameter in any place of your script, all the automatic unit handling described above boils down to occasional multiplication/division by 1.0.

__init__(atnum = 0., 符号=无, Coords = None, 单位='Angstrom', 债券=无, mol = none, **其他)[来源]

初始化自我。请参阅帮助(类型(self))以获得准确的签名。

str(符号=真实, 后缀='', 后缀_dict. = {}, 单位='Angstrom', 空间= 14., 十进制 = 6.)[来源]

返回此原子的字符串表示。

返回的字符串是一行(无换行符),始终包含原子坐标(和可能更多)。每个原子坐标都可以使用 空间 字符,有 十进制 为十进制数字保留的字符。坐标值表达 单元.

如果 象征 is True, atomic symbol is added at the beginning of the line. If 象征 是一个字符串,此精确字符串在那里打印。

后缀 is an arbitrary string that is appended at the end of returned line. It can contain identifiers in curly brackets (like for example f={fragment}) that will be replaced by values of corresponding keys from 后缀_dict. 字典。看 格式化字符串语法 for details.

例子:

>>> a = Atom(atnum=6, coords=(1,1.5,2))
>>> print(a.str())
         C      1.000000      1.500000      2.000000
>>> print(a.str(单元='bohr'))
         C      1.889726      2.834589      3.779452
>>> print(a.str(象征=False))
      1.000000      1.500000      2.000000
>>> print(a.str(象征='C2.13'))
     C2.13      1.000000      1.500000      2.000000
>>> print(a.str(后缀='protein1'))
         C      1.000000      1.500000      2.000000 protein1
>>> a.properties.在fo = 'membrane'
>>> print(a.str(后缀='subsystem={info}', 后缀_dict.=a.properties))
         C      1.000000      1.500000      2.000000 subsystem=membrane
__str__()[来源]

返回此原子的字符串表示。简化版本 str() 以魔法方式工作。

__iter__()[来源]

通过原子迭代收益率坐标。感谢那个情况 Atom 可以传递给任何需要作为参数的方法,是3D空间中的一个点或矢量。

translate(向量, 单位='Angstrom')[来源]

在空间中移动这个原子 向量,表达了 单元.

向量 应该是长度3的可迭代容器(通常是元组,列表或numpy数组)。 单元 描述存储在中的值单位 向量.

This method requires all atomic coordinates to be numerical values, TypeError is raised otherwise.

move_to(观点, 单位='Angstrom')[来源]

将此原子移动到给定的 观点 在太空中,表达 单元.

观点 应该是长度3的可迭代容器(例如:元组, Atom,列表,numpy数组)。 单元 描述存储在中的值单位 观点.

This method requires all atomic coordinates to be numerical values, TypeError is raised otherwise.

distance_to(观点, 单位='Angstrom', 结果_ ='angstrom')[来源]

测量此原子之间的距离和 观点.

观点 应该是长度3的可迭代容器(例如:元组, Atom,列表,numpy数组)。 单元 描述存储在中的值单位 观点。返回的值表达 结果_单.

This method requires all atomic coordinates to be numerical values, TypeError is raised otherwise.

向量_to(观点, 单位='Angstrom', 结果_ ='angstrom')[来源]

计算来自此原子的向量 观点.

观点 应该是长度3的可迭代容器(例如:元组, Atom,列表,numpy数组)。 单元 描述存储在中的值单位 观点。返回的值表达 结果_单.

This method requires all atomic coordinates to be numerical values, TypeError is raised otherwise.

角度(观点1, 观点2, 观点1unit. ='annstrom', 观点2unit. ='angstrom', 结果_单 ='radian')[来源]

计算从该原子指向的矢量之间的角度 观点1观点2.

观点1观点2 应该是长度3的可迭代容器(例如:元组, Atom,列表,numpy数组)。存储在其中的值分别表示, 观点1unit.观点2unit.。返回的值表达 结果_单.

This method requires all atomic coordinates to be numerical values, TypeError is raised otherwise.

rotate(矩阵)[来源]

根据旋转旋转此原子 矩阵.

矩阵 should be a container with 9 numerical values. It can be a list (tuple, numpy array etc.) listing matrix elements row-wise, either flat ([1,2,3,4,5,6,7,8,9]) or in two-level fashion ([[1,2,3],[4,5,6],[7,8,9]]).

笔记

此方法不检查是否 矩阵 是一个适当的旋转矩阵。

neighbors()[来源]

Return a list of neighbors of this atom within the molecule. The list follows the same order as the bonds attribute.

3.7.3。键

班级 Bond(原子1 =没有, 原子2 =没有, 订单= 1, mol = none, **其他)[来源]

代表两个原子之间的键的类。

此类的实例具有以下属性:

  • 原子1原子2 – two instances of Atom that form this bond
  • 或者 der – order of the bond. It is either an integer number or the floating point value stored in Bond.AR, indicating an aromatic bond
  • molMolecule this bond belongs to
  • propertiesSettings 存储有关此键的所有其他信息的实例(最初它被填充 **其他)

笔记

新创造的债券是 不是 added to 原子1.bonds 或者 原子2.bonds. Storing information about BondAtom 仅在整体上下文中相关 Molecule, so this information is updated by add_bond().

__init__(原子1 =没有, 原子2 =没有, 订单= 1, mol = none, **其他)[来源]

初始化自我。请参阅帮助(类型(self))以获得准确的签名。

__str__()[来源]

返回此键的字符串表示。

__iter__()[来源]

Iterate over bonded atoms (原子1 first, then 原子2).

is_aromatic()[来源]

检查此键是否是芳香的。

长度(单位='Angstrom')[来源]

返回债券长度,表达 单元.

as_vector(开始=无, 单位='Angstrom')[来源]

返回形成此键的两个原子之间的向量。 开始 can be used to indicate which atom should be the beginning of that vector. If not specified, self.atom1 is used. Returned value if a tuple of length 3, expressed in 单元.

other_end(原子)[来源]

关于这债券的另一端返回原子 原子. 原子 必须是形成该键的原子之一,否则提出了异常。

resize(vish_atom., 长度, 单位='Angstrom')[来源]

将此键的长度更改为 长度 表达了 单元 通过移动 vish_atom..

vish_atom. 应该是形成这种键的原子之一。该原子沿着粘合轴移动,使得新的键长度等于 长度。如果这个债券是a的一部分 Molecule 整个部分连接到 vish_atom. is moved.

笔记

Calling this method on a bond that forms a ring within a molecule raises a MoleculeError.

rotate(vish_atom., 角度, 单位='radian')[来源]

旋转含有分子的部分 vish_atom. 沿着这个键定义的轴 角度 表达了 单元.

只有当此键是a的一部分时,才会致电此方法 Molecule. vish_atom. 应该是形成该键的原子之一,表明分子的哪个部分旋转。积极的价值 角度 表示逆时针旋转(沿着粘合时,从分子的固定部分看)。

笔记

Calling this method on a bond that forms a ring raises a MoleculeError.