Source code for bbprep._internal.processes.planarfy
import stk
import stko
from bbprep._internal.ensemble.ensemble import Conformer
from .process import Process
[docs]
class Planarfy(Process):
"""Get the most planar molecule in an ensemble."""
def _run_process(
self,
conformer: Conformer,
conformer_id: int,
) -> float:
key = stk.Smiles().get_key(conformer.molecule) + f"__{conformer_id}"
if key in self._data:
return self._data[key]
pc = stko.PlanarityCalculator()
pc_results = pc.get_results(
conformer.molecule,
plane_atom_ids=self._selector.select_atoms(conformer.molecule),
deviation_atom_ids=self._selector.select_atoms(conformer.molecule),
)
value = pc_results.get_planarity_parameter()
self._save_to_data(conformer, conformer_id, value)
return self._data[key]