コード例 #1
0
ファイル: rough_test.py プロジェクト: bgruening/rdkit
    def testFlattenedFunctionalGroupHierarchy(self):
        queryDefs = FilterCatalog.GetFlattenedFunctionalGroupHierarchy()
        items = sorted(queryDefs.items())

        matches = [(Chem.MolFromSmiles("CCl"), [
            'Halogen', 'Halogen.Aliphatic', 'Halogen.NotFluorine',
            'Halogen.NotFluorine.Aliphatic'
        ]),
                   (Chem.MolFromSmiles("c1ccccc1Cl"), [
                       'Halogen', 'Halogen.Aromatic', 'Halogen.NotFluorine',
                       'Halogen.NotFluorine.Aromatic'
                   ]),
                   (Chem.MolFromSmiles("c1ccccc1F"),
                    ['Halogen', 'Halogen.Aromatic']),
                   (Chem.MolFromSmiles("CBr"), [
                       'Halogen',
                       'Halogen.Aliphatic',
                       'Halogen.Bromine',
                       'Halogen.Bromine.Aliphatic',
                       'Halogen.NotFluorine',
                       'Halogen.NotFluorine.Aliphatic',
                   ])]

        # test the normalized groups
        for mol, res in matches:
            hits = [name for name, pat in items if mol.HasSubstructMatch(pat)]
            self.assertEquals(hits, res)
        queryDefs = FilterCatalog.GetFlattenedFunctionalGroupHierarchy(
            normalized=True)

        items = sorted(queryDefs.items())

        matches = [(Chem.MolFromSmiles("CCl"), [
            'halogen', 'halogen.aliphatic', 'halogen.notfluorine',
            'halogen.notfluorine.aliphatic'
        ]),
                   (Chem.MolFromSmiles("c1ccccc1Cl"), [
                       'halogen', 'halogen.aromatic', 'halogen.notfluorine',
                       'halogen.notfluorine.aromatic'
                   ]),
                   (Chem.MolFromSmiles("c1ccccc1F"),
                    ['halogen', 'halogen.aromatic']),
                   (Chem.MolFromSmiles("CBr"), [
                       'halogen',
                       'halogen.aliphatic',
                       'halogen.bromine',
                       'halogen.bromine.aliphatic',
                       'halogen.notfluorine',
                       'halogen.notfluorine.aliphatic',
                   ])]

        for mol, res in matches:
            hits = [name for name, pat in items if mol.HasSubstructMatch(pat)]
            self.assertEquals(hits, res)
コード例 #2
0
  def test17bAddRecursiveQueriesToReaction(self):
    from rdkit.Chem import FilterCatalog
    rxn = rdChemReactions.ReactionFromSmarts("[C:1][O:2].[N:3]>>[C:1][N:2]")
    self.assertTrue(rxn)
    rxn.Initialize()
    rxn.GetReactantTemplate(0).GetAtomWithIdx(0).SetProp('query', 'carboxylicacid')
    querydefs = {k.lower(): v
                 for k, v in FilterCatalog.GetFlattenedFunctionalGroupHierarchy().items()}

    self.assertTrue('CarboxylicAcid' in FilterCatalog.GetFlattenedFunctionalGroupHierarchy())
    rxn.AddRecursiveQueriesToReaction(querydefs, 'query')
    q = rxn.GetReactantTemplate(0)
    m = Chem.MolFromSmiles('C(=O)[O-].N')
    self.assertTrue(m.HasSubstructMatch(q))
    m = Chem.MolFromSmiles('C.N')
    self.assertFalse(m.HasSubstructMatch(q))