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 } }
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]); } }