private void SubStructureHandler() { VFlibSubStructureHandler subGraphTurboSearch = null; subGraphTurboSearch = new VFlibSubStructureHandler(); if (queryMol == null) { subGraphTurboSearch.Set(rMol, pMol); } else { subGraphTurboSearch.Set(queryMol, pAC); } ClearMaps(); subGraph = subGraphTurboSearch.IsSubgraph(IsMatchBonds); if (subGraph) { foreach (var e in subGraphTurboSearch.GetFirstMapping()) { firstSolution[e.Key] = e.Value; } allMCS.AddRange(subGraphTurboSearch.GetAllMapping()); foreach (var e in subGraphTurboSearch.GetFirstAtomMapping()) { firstAtomMCS[e.Key] = e.Value; } allAtomMCS.AddRange(subGraphTurboSearch.GetAllAtomMapping()); } }
public virtual void TestIsSubgraph() { var sp = CDK.SmilesParser; var target = sp.ParseSmiles("C\\C=C/Nc1cccc(c1)N(O)\\C=C\\C\\C=C\\C=C/C"); var queryac = sp.ParseSmiles("Nc1ccccc1"); VFlibSubStructureHandler smsd1 = new VFlibSubStructureHandler(); MolHandler mol1 = new MolHandler(queryac, true, true); MolHandler mol2 = new MolHandler(target, true, true); smsd1.Set(mol1, mol2); Assert.AreEqual(true, smsd1.IsSubgraph(true)); }