コード例 #1
0
 static void Main()
 {
     {
         #region
         SmilesParser    sp            = new SmilesParser();
         IAtomContainer  atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C");
         SMARTSQueryTool querytool     = new SMARTSQueryTool("O=CO");
         bool            status        = querytool.Matches(atomContainer);
         if (status)
         {
             int nmatch   = querytool.MatchesCount;
             var mappings = querytool.GetMatchingAtoms();
             foreach (var atomIndices in mappings)
             {
                 // do something
             }
         }
         #endregion
     }
     {
         string someSmartsPattern = null;
         IChemObjectSet <IAtomContainer> molecules = null;
         #region SetAromaticity
         SMARTSQueryTool sqt = new SMARTSQueryTool(someSmartsPattern);
         sqt.SetAromaticity(new Aromaticity(ElectronDonation.CDKModel, Cycles.CDKAromaticSetFinder));
         foreach (var molecule in molecules)
         {
             // CDK Aromatic model needs atom types
             AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(molecule);
             sqt.Matches(molecule);
         }
         #endregion
     }
 }
コード例 #2
0
        public void TestQueryTool()
        {
            var             sp            = CDK.SmilesParser;
            var             atomContainer = sp.ParseSmiles("CC(=O)OC(=O)C");
            SMARTSQueryTool querytool     = new SMARTSQueryTool("O=CO", ChemObjectBuilder.Instance);

            bool status = querytool.Matches(atomContainer);

            Assert.IsTrue(status);

            int nmatch = querytool.MatchesCount;

            Assert.AreEqual(2, nmatch);

            List <int> map1 = new List <int> {
                1, 2, 3,
            };
            List <int> map2 = new List <int> {
                3, 4, 5,
            };

            var mappings = querytool.GetMatchingAtoms().ToReadOnlyList();
            var ret1     = mappings[0].OrderBy(n => n).ToReadOnlyList();

            for (int i = 0; i < 3; i++)
            {
                Assert.IsTrue(Compares.AreDeepEqual(map1[i], ret1[i]));
            }

            var ret2 = mappings[1].OrderBy(n => n).ToReadOnlyList();

            for (int i = 0; i < 3; i++)
            {
                Assert.AreEqual(map2[i], ret2[i]);
            }
        }