rdtools.conversion.xyz#

Convert XYZ to RDKit Mol and vice versa.

rdtools.conversion.xyz.add_header_to_xyz(xyz: str, title: str = '') str#

Add header to xyz string.

Parameters:
  • xyz (str) – The xyz string to be added header.

  • title (str, optional) – The title to be added. Defaults to ''.

Returns:

str – The xyz string with header.

rdtools.conversion.xyz.mol_from_xyz(xyz: str, backend: Literal['openbabel', 'xyz2mol'] = 'openbabel', header: bool = True, sanitize: bool = True, embed_chiral: bool = False, **kwargs: Any) RWMol#

Convert xyz string to RDKit Chem.RWMol.

Parameters:
  • xyz (str) – A XYZ String.

  • backend (Literal["openbabel", "xyz2mol"], optional) – The backend used to perceive molecule. Defaults to 'openbabel'. Currently, we only support 'openbabel' and 'xyz2mol'.

  • header (bool, optional) – If lines of the number of atoms and title are included. Defaults to True.

  • sanitize (bool, optional) – Sanitize the RDKit molecule during conversion. Helpful to set it to False when reading in TSs. Defaults to True.

  • embed_chiral (bool, optional) – True to embed chiral information. Defaults to True.

  • **kwargs (Any) –

    Additional arguments to be passed to the function. They will be ignored. Supported arguments for the backend xyz2mol:

    • charge: The charge of the species. Defaults to 0.

    • allow_charged_fragments: True for charged fragment, False for radical. Defaults to False.

    • use_graph: True to use networkx module for accelerate. Defaults to True.

    • use_huckel: True to use extended Huckel bond orders to locate bonds. Defaults to False.

    • original: In rare cases, we may hope to use the original

      xyz2mol python implementation (with minor modifications), other than the one available in RDKit. Set this argument to True to force use the original xyz2mol implementation in Python.

Returns:

Chem.RWMol – An RDKit molecule object corresponding to the xyz.

Raises:

NotImplementedError – If the backend is not supported.

rdtools.conversion.xyz.mol_to_xyz(mol: Mol, conf_id: int = -1, header: bool = True, comment: str = '') str#

Convert Chem.Mol to a XYZ string.

Parameters:
  • mol (Chem.Mol) – A Mol instance to be converted.

  • conf_id (int, optional) – The index of the conformer to be converted. Defaults to -1, exporting the XYZ of the first conformer.

  • header (bool, optional) – If lines of the number of atoms and title are included. Defaults to True.

  • comment (str, optional) – The comment to be added. Defaults to ''.

Returns:

str – A XYZ string.

rdtools.conversion.xyz.parse_xyz_by_openbabel(xyz: str, embed_chiral: bool = True, sanitize: bool = True) Mol#

Parse xyz into RDKit Mol utilizing openbabel.

Parameters:
  • xyz (str) – The xyz string.

  • embed_chiral (bool, optional) – True to embed chiral information. Defaults to True.

  • sanitize (bool, optional) – True to sanitize the molecule. Defaults to True.

Returns:

Chem.Mol – The RDKit Mol instance.

Raises:

ImportError – If openbabel is not installed.

rdtools.conversion.xyz.parse_xyz_by_xyz2mol(xyz: str, charge: int = 0, allow_charged_fragments: bool = False, use_huckel: bool = False, embed_chiral: bool = True, use_atom_maps: bool = False, original: bool = False, sanitize: bool = True, **kwargs: Any) Mol#

Perceive a xyz str using xyz2mol into Mol.

The implementation refers the following blog: https://greglandrum.github.io/rdkit-blog/posts/2022-12-18-introducing-rdDetermineBonds.html

Parameters:
  • xyz (str) – The xyz string.

  • charge (int, optional) – The charge of the species. Defaults to 0.

  • allow_charged_fragments (bool, optional) – True for charged fragment, False for radical. Defaults to False.

  • use_huckel (bool, optional) – True to use extended Huckel bond orders to locate bonds. Defaults to False.

  • embed_chiral (bool, optional) – True to embed chiral information. Defaults to True.

  • use_atom_maps (bool, optional) – True to set atom map numbers to the molecule. Defaults to False.

  • original (bool, optional) – Defaults to False. In rare cases, we may hope to use the original xyz2mol python implementation (with minor modifications), other than the one available in RDKit. Set this argument to True to force use the original xyz2mol implementation in Python. The user may have some flexibility to modify this “original” version located at rdtools.conversion.xyz2mol.py.

  • sanitize (bool, optional) – Whether to sanitize the perceived molecule, defaults to True.

  • **kwargs (Any) – Additional arguments to be passed to the function. They will be ignored.

Returns:

Chem.Mol – A RDKit Mol corresponding to the xyz.

rdtools.conversion.xyz.parse_xyz_by_xyz2mol_rdkit_native(xyz: str, charge: int = 0, allow_charged_fragments: bool = False, use_huckel: bool = False, embed_chiral: bool = True, use_atom_maps: bool = False) Mol#

Parse xyz with RDKit’s native implementation of xyz2mol.

Parameters:
  • xyz (str) – The xyz string.

  • charge (int, optional) – The charge of the species. Defaults to 0.

  • allow_charged_fragments (bool, optional) – True for charged fragment, False for radical. Defaults to False.

  • use_huckel (bool, optional) – True for Huckel method, False for Gasteiger method. Defaults to False.

  • embed_chiral (bool, optional) – True for chiral molecule, False for non-chiral molecule. Defaults to True.

  • use_atom_maps (bool, optional) – True for atom map, False for non-atom map. Defaults to False.

Returns:

Chem.Mol – The RDKit Mol instance.

Raises:

ValueError – If the xyz string cannot be parsed.

rdtools.conversion.xyz.xyz_to_coords(xyz: str, header: bool = False) ndarray[tuple[int, ...], dtype[float64]]#

Convert xyz string to coordinates in numpy.

Parameters:
  • xyz (str) – A XYZ String.

  • header (bool, optional) – If lines of the number of atoms and title are included. Defaults to False.

Returns:

npt.NDArray[np.float64] – the coordinates of the atoms.