I have written a program called xyzmol that converts an xyz file to an RDKit mol object, based on this paper. For ions the molecular charge has to be specified in the xyz file.
In principle this could be accomplished by using OpenBabel to convert an xyz file to and sdf file and reading the sdf file with RDKit. However, in my experience OpenBabel occasionally mis-assigns bond orders and I believe this code does this less often.
The code works by constructing an atom connectivity (AC) matrix from the xyz file, converts the AC matrix to a bond order (BO) matrix, computes the formal atomic charges, and then constructs a molecule object using all this information, including the 3D coordinates.
This work is licensed under a Creative Commons Attribution 4.0
In principle this could be accomplished by using OpenBabel to convert an xyz file to and sdf file and reading the sdf file with RDKit. However, in my experience OpenBabel occasionally mis-assigns bond orders and I believe this code does this less often.
The code works by constructing an atom connectivity (AC) matrix from the xyz file, converts the AC matrix to a bond order (BO) matrix, computes the formal atomic charges, and then constructs a molecule object using all this information, including the 3D coordinates.
The code that constructs the AC matrix from the xyz file (xyz2AC) uses scaled covalent radii to find bonds and the current scale factor is 1.25, but this may need adjusting.
The code currently works only for organic molecules, i.e. molecules containing the following elements: H, B, C-F, Si-Cl, Br, and I.
The current version assumes a close shell molecule, i.e. it does not work with radicals yet.
I hope you find it useful.
This work is licensed under a Creative Commons Attribution 4.0