function read_xyz_file() not defined in bmapqml/chemexp/utils.py, should simply be a copy of chemexp/utils?
def read_xyz_file(xyz_input, additional_attributes=["charge"]):
atomic_symbols = []
add_attr_dict={}
for add_attr in additional_attributes:
add_attr_dict={add_attr : None, **add_attr_dict}
try:
lines=[check_byte(l) for l in xyz_input.readlines()]
except AttributeError:
with open(xyz_input, "r") as input_file:
lines=input_file.readlines()
num_atoms=int(lines[0])
xyz_coordinates=np.zeros((num_atoms, 3))
nuclear_charges=np.zeros((num_atoms,), dtype=int)
lsplit=lines[1].split()
for l in lsplit:
for add_attr in additional_attributes:
add_attr_eq=add_attr+"="
if add_attr_eq == l[:len(add_attr_eq)]:
add_attr_dict[add_attr]=int(l.split("=")[1])
for atom_id, atom_line in enumerate(lines[2:num_atoms+2]):
lsplit=atom_line.split()
atomic_symbol = lsplit[0]
atomic_symbols.append(atomic_symbol)
nuclear_charges[atom_id]=NUCLEAR_CHARGE[canonical_atomtype(atomic_symbol)]
for i in range(3):
xyz_coordinates[atom_id, i]=float(lsplit[i+1])
return nuclear_charges, atomic_symbols, xyz_coordinates, add_attr_dict
That's a consequence of combining several different codes into one in a hectic way; I have committed a fixed version of the code and added a usage example in examples/chemxpl/rdkit_tools.
function read_xyz_file() not defined in bmapqml/chemexp/utils.py, should simply be a copy of chemexp/utils?