From 6bd610687a2c4fc494d71db5d6a444a77392ee86 Mon Sep 17 00:00:00 2001 From: Trevor Gokey Date: Wed, 3 Feb 2021 19:43:45 -0800 Subject: [PATCH 1/2] reparse TorsionIndexer if a new mol is returned from the TK --- .../workflow_components/state_enumeration.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/openff/qcsubmit/workflow_components/state_enumeration.py b/openff/qcsubmit/workflow_components/state_enumeration.py index 52b7e613..5af3c302 100644 --- a/openff/qcsubmit/workflow_components/state_enumeration.py +++ b/openff/qcsubmit/workflow_components/state_enumeration.py @@ -7,7 +7,7 @@ from openforcefield.utils.toolkits import OpenEyeToolkitWrapper from pydantic import Field -from openff.qcsubmit.common_structures import ComponentProperties +from openff.qcsubmit.common_structures import ComponentProperties, TorsionIndexer from openff.qcsubmit.datasets import ComponentResult from openff.qcsubmit.utils import check_missing_stereo from openff.qcsubmit.workflow_components.base_component import ( @@ -58,6 +58,7 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: result = self._create_result() for molecule in molecules: + dihedrals = molecule.properties.get("dihedrals", None) try: tautomers = molecule.enumerate_tautomers( max_states=self.max_tautomers, toolkit_registry=toolkit @@ -67,6 +68,8 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: result.add_molecule(molecule) else: for tautomer in tautomers: + if dihedrals is not None: + tautomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) result.add_molecule(tautomer) except Exception: @@ -126,7 +129,9 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: result = self._create_result() + for molecule in molecules: + dihedrals = molecule.properties.get("dihedrals", None) try: isomers = molecule.enumerate_stereoisomers( undefined_only=self.undefined_only, @@ -138,6 +143,8 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: # now check that each molecule is well defined for isomer in isomers: if not check_missing_stereo(isomer): + if dihedrals is not None: + isomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) result.add_molecule(isomer) # now check the input @@ -201,10 +208,13 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: if has_oe: for molecule in molecules: + dihedrals = molecule.properties.get("dihedrals", None) try: protomers = molecule.enumerate_protomers(max_states=self.max_states) for protomer in protomers: + if dihedrals is not None: + protomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) result.add_molecule(protomer) result.add_molecule(molecule) From 52275b52fcadc852e064e08ae2c1029b138b971a Mon Sep 17 00:00:00 2001 From: Trevor Gokey Date: Wed, 3 Feb 2021 19:54:17 -0800 Subject: [PATCH 2/2] lint --- .../workflow_components/state_enumeration.py | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/openff/qcsubmit/workflow_components/state_enumeration.py b/openff/qcsubmit/workflow_components/state_enumeration.py index 5af3c302..b75c474b 100644 --- a/openff/qcsubmit/workflow_components/state_enumeration.py +++ b/openff/qcsubmit/workflow_components/state_enumeration.py @@ -3,10 +3,6 @@ """ from typing import List -from openforcefield.topology import Molecule -from openforcefield.utils.toolkits import OpenEyeToolkitWrapper -from pydantic import Field - from openff.qcsubmit.common_structures import ComponentProperties, TorsionIndexer from openff.qcsubmit.datasets import ComponentResult from openff.qcsubmit.utils import check_missing_stereo @@ -14,6 +10,9 @@ CustomWorkflowComponent, ToolkitValidator, ) +from openforcefield.topology import Molecule +from openforcefield.utils.toolkits import OpenEyeToolkitWrapper +from pydantic import Field class EnumerateTautomers(ToolkitValidator, CustomWorkflowComponent): @@ -69,7 +68,9 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: else: for tautomer in tautomers: if dihedrals is not None: - tautomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) + tautomer.properties["dihedrals"] = TorsionIndexer.parse_obj( + dihedrals + ) result.add_molecule(tautomer) except Exception: @@ -129,7 +130,6 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: result = self._create_result() - for molecule in molecules: dihedrals = molecule.properties.get("dihedrals", None) try: @@ -144,7 +144,9 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: for isomer in isomers: if not check_missing_stereo(isomer): if dihedrals is not None: - isomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) + isomer.properties["dihedrals"] = TorsionIndexer.parse_obj( + dihedrals + ) result.add_molecule(isomer) # now check the input @@ -214,7 +216,9 @@ def _apply(self, molecules: List[Molecule]) -> ComponentResult: for protomer in protomers: if dihedrals is not None: - protomer.properties["dihedrals"] = TorsionIndexer.parse_obj(dihedrals) + protomer.properties["dihedrals"] = TorsionIndexer.parse_obj( + dihedrals + ) result.add_molecule(protomer) result.add_molecule(molecule)