コード例 #1
0
 def test20NoneHandling(self):
     with self.assertRaises(ValueError):
         rdMolStandardize.ChargeParent(None)
     with self.assertRaises(ValueError):
         rdMolStandardize.Cleanup(None)
     with self.assertRaises(ValueError):
         rdMolStandardize.FragmentParent(None)
     with self.assertRaises(ValueError):
         rdMolStandardize.Normalize(None)
     with self.assertRaises(ValueError):
         rdMolStandardize.Reionize(None)
コード例 #2
0
def standardize_mol(mol):
    """
    Standardize molecule.
    Parameters
    ----------
    mol : rdkit.Chem.rdchem.Mol
        Molecule.
    Returns
    -------
    rdkit.Chem.rdchem.Mol or None
        Standardized molecule or None if standardization failed.
    """

    try:

        # sanitize molecule
        Chem.SanitizeMol(mol)

        # remove non-explicit hydrogens
        mol = Chem.RemoveHs(mol)

        # disconnect metals from molecule
        mol = rdMolStandardize.MetalDisconnector().Disconnect(mol)

        # normalize moleucle
        mol = rdMolStandardize.Normalize(mol)

        # reionize molecule
        mol = rdMolStandardize.Reionize(mol)

        # uncharge molecule (this helps to standardize protonation states)
        u = rdMolStandardize.Uncharger()
        mol = u.uncharge(mol)

        # assign stereochemistry
        Chem.AssignStereochemistry(mol, force=True, cleanIt=True)

        return mol

    except Exception as e:

        print(f"ERROR in standardization: {e}")
        return None
コード例 #3
0
 def test4Reionize(self):
     mol = Chem.MolFromSmiles("C1=C(C=CC(=C1)[S]([O-])=O)[S](O)(=O)=O")
     nmol = rdMolStandardize.Reionize(mol)
     self.assertEqual(Chem.MolToSmiles(nmol),
                      "O=S(O)c1ccc(S(=O)(=O)[O-])cc1")
コード例 #4
0
    def test21UpdateFromJSON(self):
        params = rdMolStandardize.CleanupParameters()
        # note: these actual parameters aren't useful... they are for testing
        rdMolStandardize.UpdateParamsFromJSON(
            params, """{
    "normalizationData":[
      {"name":"silly 1","smarts":"[Cl:1]>>[F:1]"},
      {"name":"silly 2","smarts":"[Br:1]>>[F:1]"}
    ],
    "acidbaseData":[
      {"name":"-CO2H","acid":"C(=O)[OH]","base":"C(=O)[O-]"},
      {"name":"phenol","acid":"c[OH]","base":"c[O-]"}
    ],
    "fragmentData":[
      {"name":"hydrogen", "smarts":"[H]"}, 
      {"name":"fluorine", "smarts":"[F]"}, 
      {"name":"chlorine", "smarts":"[Cl]"}
    ],
    "tautomerTransformData":[
      {"name":"1,3 (thio)keto/enol f","smarts":"[CX4!H0]-[C]=[O,S,Se,Te;X1]","bonds":"","charges":""},
      {"name":"1,3 (thio)keto/enol r","smarts":"[O,S,Se,Te;X2!H0]-[C]=[C]"}
    ]}""")

        m = Chem.MolFromSmiles("CCC=O")
        te = rdMolStandardize.TautomerEnumerator(params)
        tauts = [Chem.MolToSmiles(x) for x in te.Enumerate(m)]
        self.assertEqual(tauts, ["CC=CO", "CCC=O"])
        self.assertEqual(
            Chem.MolToSmiles(rdMolStandardize.CanonicalTautomer(m, params)),
            "CCC=O")
        # now with defaults
        te = rdMolStandardize.TautomerEnumerator()
        tauts = [Chem.MolToSmiles(x) for x in te.Enumerate(m)]
        self.assertEqual(tauts, ["CC=CO", "CCC=O"])
        self.assertEqual(
            Chem.MolToSmiles(rdMolStandardize.CanonicalTautomer(m)), "CCC=O")

        m = Chem.MolFromSmiles('ClCCCBr')
        nm = rdMolStandardize.Normalize(m, params)
        self.assertEqual(Chem.MolToSmiles(nm), "FCCCF")
        # now with defaults
        nm = rdMolStandardize.Normalize(m)
        self.assertEqual(Chem.MolToSmiles(nm), "ClCCCBr")

        m = Chem.MolFromSmiles('c1cc([O-])cc(C(=O)O)c1')
        nm = rdMolStandardize.Reionize(m, params)
        self.assertEqual(Chem.MolToSmiles(nm), "O=C([O-])c1cccc(O)c1")
        # now with defaults
        nm = rdMolStandardize.Reionize(m)
        self.assertEqual(Chem.MolToSmiles(nm), "O=C([O-])c1cccc(O)c1")

        m = Chem.MolFromSmiles('C1=C(C=CC(=C1)[S]([O-])=O)[S](O)(=O)=O')
        nm = rdMolStandardize.Reionize(m, params)
        self.assertEqual(Chem.MolToSmiles(nm), "O=S([O-])c1ccc(S(=O)(=O)O)cc1")
        # now with defaults
        nm = rdMolStandardize.Reionize(m)
        self.assertEqual(Chem.MolToSmiles(nm), "O=S(O)c1ccc(S(=O)(=O)[O-])cc1")

        m = Chem.MolFromSmiles('[F-].[Cl-].[Br-].CC')
        nm = rdMolStandardize.RemoveFragments(m, params)
        self.assertEqual(Chem.MolToSmiles(nm), "CC.[Br-]")
        # now with defaults
        nm = rdMolStandardize.RemoveFragments(m)
        self.assertEqual(Chem.MolToSmiles(nm), "CC")