From e245349c5a30a99230345e5d543f65abf3179614 Mon Sep 17 00:00:00 2001 From: Karl Leswing Date: Sun, 19 May 2019 09:28:04 -0400 Subject: [PATCH] Go To CR (#2431) --- rdkit/Chem/MolStandardize/standardize.py | 3 +++ .../Chem/MolStandardize/test_standardizer.py | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 rdkit/Chem/MolStandardize/test_standardizer.py diff --git a/rdkit/Chem/MolStandardize/standardize.py b/rdkit/Chem/MolStandardize/standardize.py index 0ea51773a..c6d9dee5d 100644 --- a/rdkit/Chem/MolStandardize/standardize.py +++ b/rdkit/Chem/MolStandardize/standardize.py @@ -89,6 +89,7 @@ class Standardizer(object): :returns: The standardized molecule. :rtype: :rdkit:`Mol ` """ + mol_props = mol.GetPropsAsDict() mol = copy.deepcopy(mol) Chem.SanitizeMol(mol) mol = Chem.RemoveHs(mol) @@ -96,6 +97,8 @@ class Standardizer(object): mol = self.normalize(mol) mol = self.reionize(mol) Chem.AssignStereochemistry(mol, force=True, cleanIt=True) + for k, v in mol_props.items(): + mol.SetProp(k, v) # TODO: Check this removes symmetric stereocenters return mol diff --git a/rdkit/Chem/MolStandardize/test_standardizer.py b/rdkit/Chem/MolStandardize/test_standardizer.py new file mode 100644 index 000000000..6b153d734 --- /dev/null +++ b/rdkit/Chem/MolStandardize/test_standardizer.py @@ -0,0 +1,26 @@ +import unittest +from rdkit import Chem +from rdkit.Chem.MolStandardize.standardize import Standardizer + + +class FakeStandardizer(Standardizer): + def normalize(self): + def fake_normalize(y): + props = y.GetPropsAsDict() + for k, v in props: + y.ClearProp(k) + return y + return fake_normalize + +class TestCase(unittest.TestCase): + + def testPreserveProps(self): + PROP_NAME = "MyProp" + PROP_VALUE = "foo" + standardizer = FakeStandardizer() + m = Chem.MolFromSmiles("C") + m.SetProp(PROP_NAME, PROP_VALUE) + + standardized_mol = standardizer.standardize(m) + self.assertTrue(standardized_mol.HasProp(PROP_NAME)) + self.assertEqual(PROP_VALUE, standardized_mol.GetProp(PROP_NAME))