예제 #1
0
        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());
            }
        }
예제 #2
0
        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));
        }