Source code for pysisyphus.io.sdf

import numpy as np

from pysisyphus.constants import BOHR2ANG
from pysisyphus.Geometry import Geometry


[docs] def parse_coord_line(line): x, y, z, atom, *_ = line.strip().split() return (x, y, z), atom
[docs] def parse_sdf(text): lines = text.split("\n") # title, program, comment = lines[:3] count = lines[3] atoms, *_ = count.split() atoms = int(atoms) coord_lines = lines[4:4+int(atoms)] coords, atoms = zip(*[parse_coord_line(cl) for cl in coord_lines]) coords = np.array(coords, dtype=float) coords /= BOHR2ANG return atoms, coords
[docs] def geom_from_sdf(text, **kwargs): atoms, coords = parse_sdf(text) geom = Geometry(atoms, coords, **kwargs) return geom